wxPython中BoxSizer的一点疑问。
大侠们,小弟写一段代码。开始的时候用了格式一,一直不能成功的改变窗体大小。改了格式二后就可以了。望指点一二。
在格式一中,直接将self(一个window)当做notebook的parent,然后绑定BoxSizer到self上。这样做的时候通过跟踪调试发现:当self的大小能变化的时候,notebook的大小是完全不变的(8,8)大小。
但是在格式二中,仅仅是在self与notebook之间加了一层panel,而且panel的大小改变随着self变化,BoxSizer绑定到panel上;为什么在这样的情况下当self大小发生变化的时候,notebook能够跟着一起变化呢?我非常之不理解。
格式一::
import os
import wx
import cPickle
class BoardWindow(wx.Window):
def __init__(self,parent,ID):
wx.Window.__init__(self,parent,ID)
self.tables={}
self.notebookId=wx.NewId()
self.notebook=wx.Notebook(self,self.notebookId,style=wx.Right)
psi = wx.Panel(self.notebook,-1)
psi.SetBackgroundColour("Blue")
self.notebook.AddPage(psi, "Green")
program = wx.Panel(self.notebook,-1)
program.SetBackgroundColour("Black")
self.notebook.AddPage(program, "Mine")
packets = wx.Panel(self.notebook,-1)
packets.SetBackgroundColour("Green")
self.notebook.AddPage(packets, "Packet")
self.box = wx.BoxSizer(wx.VERTICAL)
self.box.Add(self.notebook,1,wx.EXPAND)
self.SetSizer(self.box)
self.box.Fit(self)
格式二::
import os
import wx
import cPickle
class BoardWindow(wx.Window):
def __init__(self,parent,ID):
wx.Window.__init__(self,parent,ID)
self.tables={}
self.panel=wx.Panel(self,-1,style=wx.BORDER_SIMPLE)
self.notebookId=wx.NewId()
self.notebook=wx.Notebook(self.panel,self.notebookId,style=wx.Right)
psi = wx.Panel(self.notebook,-1)
psi.SetBackgroundColour("Blue")
self.notebook.AddPage(psi, "Green")
program = wx.Panel(self.notebook,-1)
program.SetBackgroundColour("Black")
self.notebook.AddPage(program, "Mine")
packets = wx.Panel(self.notebook,-1)
packets.SetBackgroundColour("Green")
self.notebook.AddPage(packets, "Packet")
self.box = wx.BoxSizer(wx.VERTICAL)
self.box.Add(self.notebook,1,wx.EXPAND)
self.panel.SetSizer(self.box)
self.box.Fit(self.panel)
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnSize(self,event):
self.panel.SetSize((self.GetSize().width,self.GetSize().height))
print "self:",self.GetSize()
print "notebook",self.notebook.GetSize()