标题:wxPython中BoxSizer的一点疑问。
只看楼主
jiumozhi0115
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-15
 问题点数:0 回复次数:0 
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()
搜索更多相关主题的帖子: BoxSizer wxPython 疑问 
2010-04-21 00:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-303811-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.956528 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved