为什么一个wx.dialog的父窗口加载一个wx.Panel子窗口时,子窗口不能填满父窗口?
问题:
我有一个wx.Panel的子类,
class RemotePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self,parent,-1)
是作为主程序的弹出窗口来用于设置的。因此要把它作为子窗口添加给一个wx.Dialog
dlg = wx.Dialog(None, -1, title='Remote Setting Dialog',size =(500,500))
remote = RemotePanel(dlg)
dlg.ShowModal()
dlg.Destroy()
RemotePanel 我要放置几个控件,采用了sizer布局。
运行后remotePanel不能自动填满dialog窗口。如果用鼠标拖动改变窗口大小之后,就能填满。
下面图片是运行后的截图
试了好几个网络相册的图片都不能正常显示,无奈只能给个地址了;
请大家点击这个链接看图http://img383.ph.126.net/jIpvHeeqO6oSUHXxd7-Rjw==/957296395793643762.jpg
这个问题折磨我好几天了,一直找不到好的解决办法。希望有好心人给看看哪里有问题?
下面是我写的sizer:
def Dolayout(self):
# create the mainsizer
self.mainsizer = wx.BoxSizer(wx.VERTICAL)
sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
# sizer_1 has two subsizer
sizer_1_lb = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'ListBox'), orient=wx.VERTICAL)
sizer_1_bt = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'Edit Botton'),orient = wx.VERTICAL)
# the middle sizer has one widgets 'self.tree'
#sizer_tree = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL) #sizer_2 has two botton “okBtn","cancleBtn"
sizer_1_lb.Add(self.listbox,1,wx.EXPAND,5)
sizer_1.Add(sizer_1_lb, 0, wx.EXPAND|wx.ALL,5)
sizer_1_bt.Add(self.b1,0,wx.EXPAND|wx.ALL)
sizer_1_bt.Add(self.b2,0,wx.EXPAND|wx.ALL)
sizer_1_bt.Add(self.b3,0,wx.EXPAND|wx.ALL)
sizer_1_bt.Add(self.b4,0,wx.EXPAND|wx.ALL)
sizer_1.Add((80,-1))
sizer_1.Add(sizer_1_bt,0,wx.EXPAND|wx.ALL,5)
sizer_2.Add(self.okBtn,0,wx.ALIGN_RIGHT)
sizer_2.Add(self.cancelBtn,0,wx.ALIGN_RIGHT)
#sizer_tree.Add(self.tree,1,wx.EXPAND,5)
#mainsizer.Add((5,20),wx.EXPAND,5)
self.mainsizer.Add(sizer_1,0,wx.ALIGN_CENTER, 5)
#mainsizer.Add((5,20),wx.EXPAND,5)
self.mainsizer.Add(self.tree,1,wx.EXPAND)
self.mainsizer.Add(sizer_2,0,wx.ALIGN_BOTTOM|wx.ALIGN_RIGHT)
self.SetSizer(self.mainsizer)
self.mainsizer.Fit(self)
self.SetAutoLayout(True)
#self.mainsizer.SetSizeHints(self)
[解决办法]
我没有用过Dialog ,不过我怀疑是你sizer的布局有问题.你可以小心检查下.
[解决办法]
好象你要把panel先通过size调整到与对话框一样大小的