1

wxpython でイベント ボタンを使用して wx.Panel を追加することは可能ですか? パネルを切り替える方法の例はたくさんありますが、最初のパネルを非表示にして2番目のパネルを表示しますが、私には役に立ちません。追加ボタンのあるパネルを作りたいです。たとえば、私はこのようなパネルを持っています

import wx
import wx.grid as grid

class MainPanel(wx.Panel):
    """"""

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


class SecondPanel(wx.Panel):
    def __init__(self, parent,a,b):
        wx.Panel.__init__(self, parent=parent)
        MyGrid=grid.Grid(self)
        MyGrid.CreateGrid(a, b)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(MyGrid, 0, wx.EXPAND)
        self.SetSizer(sizer)

class MainFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="test",
                          size=(800,600))
        self.splitter = wx.SplitterWindow(self)

        self.panelOne = MainPanel(self.splitter)


        self.panelTwo = SecondPanel(self.splitter, 1, 1)
        txtOne = wx.StaticText(self.panelOne, -1, label = "piradoba", pos = (20,10))
        self.txtTwo = wx.StaticText(self.panelOne, -1, label = "", pos = (40,80))
        self.txtPlace = wx.TextCtrl(self.panelOne, pos = (20,30))
        button = wx.Button(self.panelOne, label = "search", pos = (40,100))
        button.Bind(wx.EVT_BUTTON, self.Onbutton)
        self.splitter.SplitHorizontally(self.panelOne, self.panelTwo)
        self.splitter.SetMinimumPaneSize(20)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.splitter, 1, wx.EXPAND)
        self.SetSizer(sizer)
   def Onbutton(self, event):
        var=self.txtPlace.GetValue()
        if len(var) == 9 or len(var) == 11:
           ???????????????????????????????????????????????

if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
frame.Show()
app.MainLoop()

たとえば、このイベントで新しいパネルを追加したいのですが、どうすればよいですか? このパネルをイベントで作成したいと思います。

4

1 に答える 1