Bonjour,

j'aurais besoin d'aide sur un problème d'affichage. Mon problème est le suivant :
J'ai crée un ScrolledPanel dans une Frame. Dans ce ScrolledPanel, j'ajoute un BoxSizer qui contient plusieurs textCtrl. A partir d'une certaines tailles, mes textCtrl se retrouvent empilés a la fin de mon boxsizer.
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
46
47
48
49
50
51
52
53
54
class MyForm(wx.Frame):
 
#----------------------------------------------------------------------
def __init__(self):
    wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial", size=(200,500))
 
    # Add a panel so it looks the correct on all platforms
    self.panel = wx.Panel(self, wx.ID_ANY)
 
    # --------------------
    # Scrolled panel stuff
    self.scrolled_panel = scrolled.ScrolledPanel(self.panel, -1,
                             style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER, name="panel1")
    self.scrolled_panel.SetAutoLayout(1)
    self.scrolled_panel.SetupScrolling()
 
    words = range(0,2000)
    self.spSizer = wx.BoxSizer(wx.VERTICAL)
    self.spSizer1 = wx.BoxSizer(wx.VERTICAL)
    self.spSizer2 = wx.BoxSizer(wx.VERTICAL)
 
    for word in words:
        text = wx.TextCtrl(self.scrolled_panel, value=str(word))
        self.spSizer.Add(text)
 
    self.scrolled_panel.SetSizer(self.spSizer)
    self.scrolled_panel.Layout()
    self.scrolled_panel.SetupScrolling()
    # --------------------
 
    btn = wx.Button(self.panel, label="Add Widget")
    btn.Bind(wx.EVT_BUTTON, self.onAdd)
 
    panelSizer = wx.BoxSizer(wx.VERTICAL)
    panelSizer.AddSpacer(50)
    panelSizer.Add(self.scrolled_panel, 1, wx.EXPAND)
    panelSizer.Add(btn)
    self.panel.SetSizer(panelSizer)
 
 
#----------------------------------------------------------------------
def onAdd(self, event):
    """"""
    print "in onAdd"
    new_text = wx.TextCtrl(self.scrolled_panel, value="New Text")
    self.spSizer.Add(new_text)
    self.scrolled_panel.Layout()
    self.scrolled_panel.SetupScrolling()
 
 # Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm().Show()
    app.MainLoop()
Voici un exemple de code qui montre le problème.
Si quelqu'un a une solution ou une piste de solution, je suis preneuse.

Merci par avance.