wxpython - 垂直拆分水平 BoxSizer
wxpython - Split horizontal BoxSizer vertically
我尝试编写一些小型 GUI 以使用 wxpython 进行测试。我得到了一个带有两个面板的 BoxSizer。但现在我想在我的 GUI 底部有两个并排的面板。如何垂直拆分 Horizontal Sizer?
到目前为止,这是我的代码:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, size=(300, 250))
panel1 = wx.Panel(self,-1, style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(self,-1, style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE")
panel2.SetBackgroundColour("RED")
box = wx.BoxSizer(wx.VERTICAL)
box.Add(panel1, 2, wx.EXPAND)
box.Add(panel2, 1, wx.EXPAND)
self.SetAutoLayout(True)
self.SetSizer(box)
self.Layout()
app = wx.PySimpleApp()
frame = MyFrame(None, -1, "Sizer Test")
frame.Show()
app.MainLoop()
您需要创建一个垂直方向的 BoxSizer
作为顶级 sizer,然后将水平 sizer 添加到其中。这是一个例子:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, size=(300, 250))
main_panel = wx.Panel(self)
panel1 = wx.Panel(main_panel,-1, style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(main_panel,-1, style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE")
panel2.SetBackgroundColour("RED")
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.AddStretchSpacer()
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(panel1, 2, wx.EXPAND)
box.Add(panel2, 1, wx.EXPAND)
mainsizer.Add(box, 1, wx.EXPAND)
main_panel.SetSizer(mainsizer)
self.Layout()
app = wx.App()
frame = MyFrame(None, -1, "Sizer Test")
frame.Show()
app.MainLoop()
另请注意,wx.PySimpleApp
已弃用。您现在应该只使用 wx.App
。
我尝试编写一些小型 GUI 以使用 wxpython 进行测试。我得到了一个带有两个面板的 BoxSizer。但现在我想在我的 GUI 底部有两个并排的面板。如何垂直拆分 Horizontal Sizer?
到目前为止,这是我的代码:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, size=(300, 250))
panel1 = wx.Panel(self,-1, style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(self,-1, style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE")
panel2.SetBackgroundColour("RED")
box = wx.BoxSizer(wx.VERTICAL)
box.Add(panel1, 2, wx.EXPAND)
box.Add(panel2, 1, wx.EXPAND)
self.SetAutoLayout(True)
self.SetSizer(box)
self.Layout()
app = wx.PySimpleApp()
frame = MyFrame(None, -1, "Sizer Test")
frame.Show()
app.MainLoop()
您需要创建一个垂直方向的 BoxSizer
作为顶级 sizer,然后将水平 sizer 添加到其中。这是一个例子:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, size=(300, 250))
main_panel = wx.Panel(self)
panel1 = wx.Panel(main_panel,-1, style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(main_panel,-1, style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE")
panel2.SetBackgroundColour("RED")
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.AddStretchSpacer()
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(panel1, 2, wx.EXPAND)
box.Add(panel2, 1, wx.EXPAND)
mainsizer.Add(box, 1, wx.EXPAND)
main_panel.SetSizer(mainsizer)
self.Layout()
app = wx.App()
frame = MyFrame(None, -1, "Sizer Test")
frame.Show()
app.MainLoop()
另请注意,wx.PySimpleApp
已弃用。您现在应该只使用 wx.App
。