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