IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

[wxpython] Aide pour BoxSizer et button


Sujet :

wxPython

  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut [wxpython] Aide pour BoxSizer et button
    Bonjour bonsoir à tous!

    Bonne année

    Bon après avoir lu la documentation de Alain sur le wxpython, j'ai commencé à codé un truc.
    À partir de l'exemple 7 du document, j'essais de faire une petite interface graphique avec ceci:
    -menu fichier
    -barre de statut
    -BoxSizer
    -GridSizer
    -4 bouton dans le gridsizer

    J'avoue que j'ai essayé quelques truc ( avec le démo notament) et j'arrive à faire des button mais les intégré dans un sizer là ça marche pas.

    Voilà ma première ébauche de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    def __init__(self, titre):
    		wx.Frame.__init__(self, None, -1, title = titre, size = (400, 200))
    		# widgets du menu fichier
    		menuFichier = wx.Menu(style = wx.MENU_TEAROFF)
    		menuFichier.Append(wx.ID_OPEN, "&Ouvrir\tCTRL+o", "menu ouvrir")
    		menuFichier.AppendSeparator()
    		menuFichier.Append(wx.ID_EXIT, "&Quitter\tCTRL+Q", "menu quitter")
     
    		menuBarre = wx.MenuBar()
    		menuBarre.Append(menuFichier, "&Fichier")
    		self.SetMenuBar(menuBarre)
     
    		# événement du menu
    		wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit)
    		wx.EVT_MENU(self, wx.ID_OPEN, self.OnOpen)
     
    		# widgets de la barre de statut
    		self.barre = wx.StatusBar(self, -1)
    		self.barre.SetFieldsCount(2)
    		self.barre.SetStatusWidths([-1, -1])
    		self.SetStatusBar(self.barre)
     
    		# Conteneur pour les 4 boutons
    		frameSizer = wx.BoxSizer(wx.VERTICAL)
    		panelSizer = wx.GridSizer(2, 2, 25, 25)
    		conteneur = wx.Panel(self, -1)
     
    		# widgets des boutons
    		btnSave = wx.Button(self, wx.ID_SAVE, "Sauvegarder", (160, 35))
    		btnOuvrir = wx.Button(self, wx.ID_OPEN, "Ouvrir", (160, 35))
    		btnStartA = wx.Button(self, wx.ID_OK, "Démarrer", (160, 35))
    		btnQuitter = wx.Button(self, wx.ID_EXIT, "Quitter", (160, 35))
     
    		# Ajout des boutons au Panel
    		panelSizer.Add(btnSave, 0, wx.ALIGN_CENTRE)
    		panelSizer.Add(btnOuvrir, 0, wx.ALIGN_CENTRE)
    		panelSizer.Add(btnStartA, 0, wx.ALIGN_CENTRE)
    		panelSizer.Add(btnQuitter, 0, wx.ALIGN_CENTRE)
     
    		# Réglage du conteneur
    		conteneur.SetSizer(panelSizer)
    		frameSizer.Add(conteneur, 1, wx.EXPAND)
    		self.SetSizer(frameSizer)
    		frameSizer.SetSizeHints(self)
    		self.SetSize((400, 200))
    Dans l'exemple une boucle ajoute des hello world dans le gridsizer; j'ai donc simplement voulu ajouter des bouton à la place avec la méthode .Add.

    Merci du futur coup de pouce!

    @+

  2. #2
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Tes boutons doivent être placés par un sizer que tu attribues à ton panel conteneur.

    Il doivent donc avoir pour parent ce panel, et non ta Frame.

    Si tu remplaces le mot self par conteneur dans la construction de tes boutons, ça devrait fonctionner.

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Merci beaucoup Alain_72,

    Effectivement ça fonctionne en changeant le self.

    Si je comprend bien, lorsque l'on fait un sizer, il faut toujours, en plus de l'ajouter avec le .Add, lier le "Parent window" dans les paramêtre avec notre variable "conteneur" dans mon cas.

    @+

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 5
    Par défaut
    Bonjour,

    Je débute avec wxPython. Shaika-Dzari, tu parles d'une documentation sur wxPython écrite par Alain. Où peut-on la trouver ?

    Merci

  5. #5
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864

Discussions similaires

  1. Besoin d'aide pour Tedit, Button, et autres
    Par Teemy dans le forum Débuter
    Réponses: 1
    Dernier message: 28/12/2009, 08h37
  2. [wxPython] aide pour wxlistcrtl
    Par nadrak dans le forum wxPython
    Réponses: 2
    Dernier message: 10/03/2005, 10h20
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo