Wie verschachtelt man mehrere BoxSizer
Verfasst: Montag 18. Dezember 2006, 20:06
Hallo wxPython-Gemeinde,
ich versuche derzeit mehrere Widgets auf einem Frame zu verteilen. Die Anordnung ist nicht besonders kompliziert. Aber ich bekomme diese BoxSizer nicht vernünftig verschachtelt. Was mache ich da Falsch?
Ich habe eine Toolbar (die Bildchen konnte ich leider nicht übertragen), ein TextCtrl und zwei Buttons. Die Toolbar soll über allem stehen. Unter der Toolbar sollen jeweils rechts und links das TextCtrl-Widget und die Buttons sitzen. Das TExtCtrl soll zu allen Richtungen Expandiert werden (wx.ALL|wx.EXPAND). Die Button jeweils übereinander liegend sollen in der rechten Spalte in der Default-Größe liegen.
Die Anordnung in meinem Script, führt leider nur dazu, dass die Toolbar und das TextCtrl sich teilweise verdecken. Vielleicht kann mir einer von euch helfen.
Grüße, Calo
ich versuche derzeit mehrere Widgets auf einem Frame zu verteilen. Die Anordnung ist nicht besonders kompliziert. Aber ich bekomme diese BoxSizer nicht vernünftig verschachtelt. Was mache ich da Falsch?
Code: Alles auswählen
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
class MyToolBar(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(350, 250))
vbox1 = wx.BoxSizer(wx.VERTICAL)
# vbox2 = wx.BoxSizer(wx.VERTICAL)
hbox = wx.BoxSizer(wx.HORIZONTAL)
img_new = wx.Image(r'icon\stock_new.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
img_open = wx.Image(r'icon\stock_open.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
img_save = wx.Image(r'icon\stock_save.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
img_exit = wx.Image(r'icon\stock_exit.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
toolbar = wx.ToolBar(self, wx.ID_ANY, style=wx.TB_HORIZONTAL | wx.NO_BORDER)
toolbar.SetToolBitmapSize(size=(24,24))
toolbar.AddSimpleTool(wx.ID_ANY, img_new, 'New', '')
toolbar.AddSimpleTool(wx.ID_ANY, img_open, 'Open', '')
toolbar.AddSimpleTool(wx.ID_ANY, img_save, 'Save', '')
toolbar.AddSeparator()
toolbar.AddSimpleTool(wx.ID_ANY, img_exit, 'Exit', '')
toolbar.Realize()
text = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_MULTILINE)
# button1 = wx.Button(self, wx.ID_ANY, "text-1")
# button2 = wx.Button(self, wx.ID_ANY, "text-2")
# vbox2.Add(button1, 0)
# vbox2.Add(button2, 0)
# hbox.Add(vbox2, 1)
# self.SetSizer(vbox2)
vbox1.Add(toolbar)
hbox.Add(text, 1, wx.ALL|wx.EXPAND)
vbox1.Add(hbox, 1, wx.ALL|wx.EXPAND)
self.SetSizer(hbox)
self.SetSizer(vbox1)
self.statusbar = self.CreateStatusBar()
self.Centre()
class MyApp(wx.App):
def OnInit(self):
frame = MyToolBar(None, wx.ID_ANY, 'toolbar.py')
frame.Show(True)
return True
app = MyApp(0)
app.MainLoop()
Die Anordnung in meinem Script, führt leider nur dazu, dass die Toolbar und das TextCtrl sich teilweise verdecken. Vielleicht kann mir einer von euch helfen.
Grüße, Calo