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 positionner 4 boutons avec wx.BoxSizer [Python 2.X]


Sujet :

wxPython

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut wxPython positionner 4 boutons avec wx.BoxSizer
    Bonjour à tous,

    Voilà, j'étudie actuellement le wxPython, et plus précisément, le wx.BoxSizer.

    J'utilise Python version 2.7.9 et wxPython version 3.0.2.0.

    J'essaie de positionner 4 boutons dans un Panel.

    Le premier est sensé être tout en haut à gauche, le second tout en haut à droite, le troisième tout en bas à gauche et le quatrième tout en bas à droite de l'écran.

    J'aimerais le faire avec le sizer wx.BoxSizer, mais apparemment, il y a quelque chose qui cloche, car je n'obtiens pas satisfaction.

    Dès que j'aurais bien compris comment positionner des widgets simples comme les boutons avec ce sizer, je pense que je pourrais également le faire avec des widgets d'autres types.

    Mais encore faut-il que cela marche, chose qui n'est apparemment pas le cas encore.

    Je vous soumets mon code ci-dessous, en espérant obtenir un petit coup de main.

    Avec mes remerciements anticipés.

    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
    # -*- coding: utf-8 -*-
     
    import wx
     
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, parent = None, title="Test du BoxSizer")
            vbox = wx.BoxSizer(wx.VERTICAL)
            hbox=wx.BoxSizer(wx.HORIZONTAL)
            hbox1=wx.BoxSizer(wx.HORIZONTAL)
            self.panel=wx.Panel(self)
            self.btn1=wx.Button(self.panel, label="Bouton 1")
            self.btn2=wx.Button(self.panel, label="Bouton 2")
            self.btn3=wx.Button(self.panel, label="Bouton 3")
            self.btn4=wx.Button(self.panel, label="Bouton 4")
            hbox.Add(self.btn1, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox.Add((0,0), proportion=4, flag=wx.EXPAND)
            hbox.Add(self.btn2, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox1.Add(self.btn3, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox1.Add((0,0), proportion=4, flag=wx.EXPAND)
            hbox1.Add(self.btn4, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            vbox.Add(hbox, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
            #vbox.Add((0,0), proportion = 1, flag=wx.EXPAND)
            vbox.Add(hbox1, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
            self.panel.SetSizer(vbox)
            vbox.SetSizeHints(self)
            self.Centre()
    if __name__ == '__main__':
        app = wx.App(redirect = False)
        frame = MyFrame()
        frame.Show(True)
        app.MainLoop()

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Rebonjour à tous,

    Juste pour vous dire que j'ai enfin pu trouver une solution à mon problème.

    Il fallait juste jouer avec le paramètre "proportion" de la méthode "Add" du Sizer wx.BoxSizer.

    J'ai tout simplement ajouté une proportion de 4 entre les Sizers horizontaux,, à l'intérieur du Sizer vertical.

    Je poste mon code corrigé ci-dessous, espérant que celà rendra service à d'autres débutants comme moi :

    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
    # -*- coding: utf-8 -*-
     
    import wx
     
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, parent = None, title="Test du BoxSizer")
            vbox = wx.BoxSizer(wx.VERTICAL)
            hbox=wx.BoxSizer(wx.HORIZONTAL)
            hbox1=wx.BoxSizer(wx.HORIZONTAL)
            self.panel=wx.Panel(self)
            self.btn1=wx.Button(self.panel, label="Bouton 1")
            self.btn2=wx.Button(self.panel, label="Bouton 2")
            self.btn3=wx.Button(self.panel, label="Bouton 3")
            self.btn4=wx.Button(self.panel, label="Bouton 4")
            hbox.Add(self.btn1, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox.Add((0,0), proportion=4, flag=wx.EXPAND)
            hbox.Add(self.btn2, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox1.Add(self.btn3, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            hbox1.Add((0,0), proportion=4, flag=wx.EXPAND)
            hbox1.Add(self.btn4, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
            vbox.Add(hbox, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
            #vbox.Add((0,0), proportion = 4, flag=wx.EXPAND)
            vbox.Add(hbox1, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
            self.panel.SetSizer(vbox)
            vbox.SetSizeHints(self)
            self.Centre()
    if __name__ == '__main__':
        app = wx.App(redirect = False)
        frame = MyFrame()
        frame.Show(True)
        app.MainLoop()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/10/2004, 16h20
  2. Bouton avec bitmap transparent
    Par eag35 dans le forum MFC
    Réponses: 2
    Dernier message: 14/09/2004, 16h15
  3. [FLASH MX] Bouton avec états différents
    Par Chucky69 dans le forum Flash
    Réponses: 5
    Dernier message: 24/08/2004, 12h01
  4. [MFC] bouton avec option "accept files"
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2004, 16h15
  5. Construire chemin sur bouton avec évt Javascript
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/05/2003, 10h26

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