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()