wxpython 小部件在拆分时无法正确显示 window
wxpython widgets not showing properly on split window
import wx, wx.lib.mixins.listctrl as wxlc
class Frame(wx.Frame):
def __init__(self, parent):
super().__init__(parent, -1, title='My Split Panel', size=(1000, 650))
self.initpos = 300
self.sp = wx.SplitterWindow(self)
self.p1 = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)
self.p2 = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)
self.p1.SetBackgroundColour('light')
self.p2.SetBackgroundColour('light')
self.sp.SplitVertically(self.p1, self.p2, self.initpos)
sizer = wx.BoxSizer(wx.VERTICAL)
grid = wx.GridBagSizer(2, 2)
grid.Add(wx.StaticText(self.p1, -1, label='Type:'), (0,0))
self.select_type = wx.Choice(self.p1, -1, choices=['X=Y', 'X != Y'])
grid.Add(self.select_type, (0,1), flag=wx.EXPAND)
if __name__ == '__main__':
app = wx.App()
frame = Frame(None)
frame.Show()
app.SetTopWindow(frame)
app.MainLoop()
我尝试将不同的小部件放在拆分的 windows 上。对于代码和图形,statictext 和 textctrl 未显示在 (0,0) 和 (0,1) 上。如何解决问题?
您不仅需要填充 sizer
,还需要分配它。
我假设添加指令:
self.p1.SetSizer(grid)
将解决您的问题。
import wx, wx.lib.mixins.listctrl as wxlc
class Frame(wx.Frame):
def __init__(self, parent):
super().__init__(parent, -1, title='My Split Panel', size=(1000, 650))
self.initpos = 300
self.sp = wx.SplitterWindow(self)
self.p1 = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)
self.p2 = wx.Panel(self.sp, style=wx.SUNKEN_BORDER)
self.p1.SetBackgroundColour('light')
self.p2.SetBackgroundColour('light')
self.sp.SplitVertically(self.p1, self.p2, self.initpos)
sizer = wx.BoxSizer(wx.VERTICAL)
grid = wx.GridBagSizer(2, 2)
grid.Add(wx.StaticText(self.p1, -1, label='Type:'), (0,0))
self.select_type = wx.Choice(self.p1, -1, choices=['X=Y', 'X != Y'])
grid.Add(self.select_type, (0,1), flag=wx.EXPAND)
if __name__ == '__main__':
app = wx.App()
frame = Frame(None)
frame.Show()
app.SetTopWindow(frame)
app.MainLoop()
我尝试将不同的小部件放在拆分的 windows 上。对于代码和图形,statictext 和 textctrl 未显示在 (0,0) 和 (0,1) 上。如何解决问题?
您不仅需要填充 sizer
,还需要分配它。
我假设添加指令:
self.p1.SetSizer(grid)
将解决您的问题。