首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

为什么一个wx.dialog的父窗口加载一个wx.Panel子窗口时,子窗口不能填满父窗口?解决方案

2012-04-21 
为什么一个wx.dialog的父窗口加载一个wx.Panel子窗口时,子窗口不能填满父窗口?问题:我有一个wx.Panel的子

为什么一个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调整到与对话框一样大小的

热点排行