Zusammenspiel von StaticBox und BoxSizer
Verfasst: Freitag 22. Oktober 2010, 21:41
Hallo,
das Anbringen mehrerer widgets, im Besonderen das Zusammenspiel von
StaticBox und BoxSizer macht mir graue Haare. Im folgenden sollten
auf einem weißen panel 2 static Boxen sein, mit je ein (paar) Textcontrols
DARIN. Das folgende geht aber leicht daneben:
Ich würde gerne verstehen, was da falsch ist.
joh
das Anbringen mehrerer widgets, im Besonderen das Zusammenspiel von
StaticBox und BoxSizer macht mir graue Haare. Im folgenden sollten
auf einem weißen panel 2 static Boxen sein, mit je ein (paar) Textcontrols
DARIN. Das folgende geht aber leicht daneben:
Code: Alles auswählen
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size = (300, 200),
style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE)
self.panel = wx.Panel(self)
self.panel.SetBackgroundColour("White")
# box1
self.box1 = wx.StaticBox(self.panel, -1, "Ctrl_1")
self.box1.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))
self.box1.SetForegroundColour(wx.BLACK)
self.box1_sizer = wx.StaticBoxSizer(self.box1)
self.txtctrl1 = wx.TextCtrl(self, -1, "", size=(120, -1))
self.box1_sizer.Add(self.txtctrl1, 1, 0, wx.CENTER, 0)
# box2
self.box2 = wx.StaticBox(self.panel, -1, "Ctrl_23")
self.box2.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))
self.box2.SetForegroundColour(wx.BLACK)
self.box2_sizer = wx.StaticBoxSizer(self.box2,wx.VERTICAL)
self.txtctrl2 = wx.TextCtrl(self, -1, "", size=(300, -1))
self.txtctrl3 = wx.TextCtrl(self, -1, "", size=(300, -1))
self.box2_sizer.Add(self.txtctrl2, 1, 0, wx.CENTER, 0)
self.box2_sizer.Add(self.txtctrl3, 1, 0, wx.CENTER, 0)
# mainsizer
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.Add(self.box1_sizer, 0, wx.ALIGN_LEFT| wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
mainsizer.Add(self.box2_sizer, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
self.SetSizer(mainsizer)
mainsizer.Fit(self)
self.Bind(wx.EVT_CLOSE, self.exitApp)
def exitApp(self,event=None):
self.Destroy()
if __name__ == '__main__':
myapp = wx.App(redirect=False)
myframe = MainWindow(None, 'test')
myframe.Center()
myframe.Show()
myapp.MainLoop()
joh