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)

将解决您的问题。