0

ノートブックのpage1のpanel1はSize(400,100)で定義されています。Sizerでパネルのサイズを変更したくありません。

test.py

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()
4

1 に答える 1

1

サイザーがその中のアイテムのサイズを変更する方法は 2 つあります。

1 つ目は、「サイザーによって指定されたスペースを埋めるように項目を拡張する」wx.EXPANDフラグです。このフラグを使用していますが、この動作は望ましくないため、削除する必要があります。

次に、はおよびメソッドの引数wx.BoxSizerを使用してオブジェクトのサイズを変更できます。のドキュメントには「proportionAdd()AddMany()wx.BoxSizer

[サイザー内のオブジェクト] は両方向 (高さと幅) に拡大できます [...] これは、アイテムがサイザーに追加されたときにアイテムに与えられる比率パラメーターによって決定されます。これは、重み係数として解釈されます。つまり、ウィンドウのサイズがまったく変更されないことを示すゼロ、またはゼロを超える可能性があります。

(強調を追加)

あなたの場合、すでに比率を 0 に設定しており、 a を使用していwx.BoxSizerないため、これは問題ではありませんが、将来的には留意する必要があります。

于 2012-09-23T02:43:19.030 に答える