首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxpython setsizer

wxpython setsizer
EN

Stack Overflow用户
提问于 2012-09-23 00:10:55
回答 1查看 2.5K关注 0票数 0

笔记本的panel1 in page1定义为大小(400,100)..I不希望Sizer调整面板的大小。

test.py

代码语言:javascript
复制
import random
import wx

########################################################################
class TabPanel1(wx.Panel):
    #----------------------------------------------------------------------
    def __init__(self, parent):
        """"""
        wx.Panel.__init__(self, parent=parent)

        colors = ["red", "blue", "gray", "yellow", "green"]
        self.SetBackgroundColour(random.choice(colors))

    panel1 = wx.Panel(self,size=(400,100))
    panel1.SetBackgroundColour('brown')

    panel1gs = wx.GridSizer(2,2,1,2)

    panel1gs.AddMany( [ (wx.StaticText(panel1,label='FirstLabel'),0,wx.EXPAND),
            (wx.StaticText(panel1,label='SecondLabel'),0,wx.EXPAND),
            (wx.StaticText(panel1,label='ThirdLabel'),0,wx.EXPAND),
            (wx.StaticText(panel1,label='FourthLabel'),0,wx.EXPAND)
            ] )



    panel1.SetSizer(panel1gs)

    panel2 = wx.Panel(self,size=(400,100))
    panel2.SetBackgroundColour('#4f5042')

    panel3 = wx.Panel(self,size=(400,100))
    panel3.SetBackgroundColour('#4f5042')

        btn = wx.Button(self, label="Press Me")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(btn, 0, wx.ALL, 5)
    sizer.Add(panel1, 0, wx.ALL, 5)
    sizer.Add(panel2, 0, wx.ALL, 5)
    sizer.Add(panel3, 0, wx.ALL, 5)


        self.SetSizer(sizer)

class TabPanel2(wx.Panel):
    #----------------------------------------------------------------------
    def __init__(self, parent):
        """"""
        wx.Panel.__init__(self, parent=parent)

        colors = ["red", "blue", "gray", "yellow", "green"]
        self.SetBackgroundColour(random.choice(colors))

        btn = wx.Button(self, label="Press Me")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(btn, 0, wx.ALL, 10)

        self.SetSizer(sizer)

########################################################################
class DemoFrame(wx.Frame):
    """
    Frame that holds all other widgets
    """

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""        
        wx.Frame.__init__(self, None, wx.ID_ANY, 
                          "Notebook Tutorial",
                          size=(800,600)
                          )
        panel = wx.Panel(self)

        notebook = wx.Notebook(panel)
        tabOne = TabPanel1(notebook)
        notebook.AddPage(tabOne, "Tab 1")

        tabTwo = TabPanel2(notebook)
        notebook.AddPage(tabTwo, "Tab 2")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5)
        panel.SetSizer(sizer)
        self.Layout()

        self.Show()

#----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App(False)
    frame = DemoFrame()
    app.MainLoop()
EN

回答 1

Stack Overflow用户

发布于 2012-09-23 02:43:19

有两种方法可以改变一个项目内的一个项目的大小。

首先是 flag,它“将使项目被扩展,以填充它所提供的空间。”您正在使用此标志,但您不希望这种行为,所以您应该删除它们。

其次,wx.BoxSizer可以使用 methods中的proportion参数调整对象的大小。's documentation状态“

测量器中的物体可以双向生长(高度和宽度).这是由添加到sizer中时给予项目的比例参数确定的。它被解释为一个权重因子,即它可以是零,表示窗口不能在所有上调整大小,或者大于零。

(强调后加)

在您的例子中,您已经将比例设置为0,而且您甚至没有使用wx.BoxSizer,所以这对您来说不是问题,但在将来需要记住。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12548700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档