Python 必须调用wx.Panel两次才能设置正确的大小

Python 必须调用wx.Panel两次才能设置正确的大小,python,wxpython,Python,Wxpython,此代码将在同一窗口内创建两个面板对象。 如果wx.Panel调用的任一行被删除,则另一个面板的大小将不正确,它将填满整个框架 为什么?请参阅以下文档: wx.Frame处理以下事件: -wxEVT_SIZE:如果框架只有一个子窗口,不计算状态和工具栏,此子窗口的大小将调整为占据整个框架客户端区域。[……] 您可以定义自己的行为来指定不同的行为: 类MyFrame(wx.Frame): 定义初始化(自): wx.Frame.\uuuu init\uuuuu(self,None,title='Tes

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

为什么?

请参阅以下文档:

wx.Frame
处理以下事件:
-
wxEVT_SIZE
:如果框架只有一个子窗口,不计算状态和工具栏,此子窗口的大小将调整为占据整个框架客户端区域。[……]

您可以定义自己的行为来指定不同的行为:

类MyFrame(wx.Frame):
定义初始化(自):
wx.Frame.\uuuu init\uuuuu(self,None,title='Test',size=wx.size(500500))
self.panel=wx.panel(self,-1,尺寸=wx.size(500,10))
self.sizer=wx.BoxSizer(wx.水平)
self.sizer.Add(self.panel)
自调整器(自调整器)
self.Show()
请参阅以下文件:

wx.Frame
处理以下事件:
-
wxEVT_SIZE
:如果框架只有一个子窗口,不计算状态和工具栏,此子窗口的大小将调整为占据整个框架客户端区域。[……]

您可以定义自己的行为来指定不同的行为:

类MyFrame(wx.Frame):
定义初始化(自):
wx.Frame.\uuuu init\uuuuu(self,None,title='Test',size=wx.size(500500))
self.panel=wx.panel(self,-1,尺寸=wx.size(500,10))
self.sizer=wx.BoxSizer(wx.水平)
self.sizer.Add(self.panel)
自调整器(自调整器)
self.Show()
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()