0

ノートブックの一部となる Tabpanel1、Tabpanel2 を作成しています。その TabPanel1 内には、さらに 3 つのパネルがあります。 panel1a、panel1b、panel1c

panel1a の親 ID パラメータは何にする必要がありますか? TabPanel1 にする必要がありますか?

コード.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

0

簡単に言うと、オブジェクトのparentは、オブジェクトが内部に表示されるオブジェクトです。また、親が破壊されると子供は破壊され、隠されると子供は隠されます。

したがって、、、panel1aおよびpanel1bpanel1cすべて内部 panel1に表示panel1される場合は、それらの子に最も近いため、親にとって最善の策です。panel1、順番に、TabPanel1の中にあるので、その親はTabPanel1です。理解?

ちなみに、TabPanel1.__init__()メソッドにインデントエラーがあるようです。うまくいけば、それはSOにカットアンドペーストすることによる単なるエラーです。

于 2012-09-23T02:50:32.203 に答える