必须调用wx.面板两次以设置正确的大小


import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Test',size=wx.Size(500,500))
self.panel = wx.Panel(self, -1,pos=(20,40),size=wx.Size(10,500))
self.panel = wx.Panel(self, -1,size=wx.Size(500,10))
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame()
app.MainLoop()

此代码将在同一窗口中创建两个面板对象。 如果任一行为 wx。面板调用被删除,另一个面板的大小不正确,它将填满整个框架。

为什么?

请参阅wx.Frame的文档:

wx.Frame处理以下事件:
-wxEVT_SIZE:如果框架只有一个子窗口(不包括状态和工具栏(,则调整此子窗口的大小以占用整个框架工作区。[...]

您可以定义自己的大小调整器以指定不同的行为:

class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Test',size=wx.Size(500,500))
self.panel = wx.Panel(self, -1,size=wx.Size(500,10))
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
self.sizer.Add(self.panel)
self.SetSizer(self.sizer)
self.Show()

最新更新