【问题标题】:add pages on button press (wx.Notebook)在按钮按下时添加页面(wx.Notebook)
【发布时间】:2015-03-06 08:23:09
【问题描述】:

我有 wx.Notebook 和 2 页:

nb = wx.Notebook(PanelLobby,wx.ID_ANY,pos=(100,100),size=(413,214))
nb.AddPage(page1,"Page 1",select=True)
nb.AddPage(page2,"Page 2")

我想在按钮按下时添加页面, 我尝试绑定 wx.EVT_LEFT_DOWN 事件,但没有成功。

提前致谢。

【问题讨论】:

    标签: python wxpython wxnotebook


    【解决方案1】:

    这其实很简单。这是一种方法:

    import random
    import wx
    
    ########################################################################
    class TabPanel(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=(600,400)
                              )
            panel = wx.Panel(self)
            self.tab_num = 3
    
            self.notebook = wx.Notebook(panel)
            tabOne = TabPanel(self.notebook)
            self.notebook.AddPage(tabOne, "Tab 1")
    
            tabTwo = TabPanel(self.notebook)
            self.notebook.AddPage(tabTwo, "Tab 2")
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(self.notebook, 1, wx.ALL|wx.EXPAND, 5)
    
            btn = wx.Button(panel, label="Add Page")
            btn.Bind(wx.EVT_BUTTON, self.addPage)
            sizer.Add(btn)
    
            panel.SetSizer(sizer)
            self.Layout()
    
            self.Show()
    
        #----------------------------------------------------------------------
        def addPage(self, event):
            """"""
            new_tab = TabPanel(self.notebook)
            self.notebook.AddPage(new_tab, "Tab %s" % self.tab_num)
            self.tab_num += 1
    
    #----------------------------------------------------------------------
    if __name__ == "__main__":
        app = wx.App(False)
        frame = DemoFrame()
        app.MainLoop()
    

    【讨论】:

    • 你熟悉auiNotebook吗?你知道我是否也可以在这个笔记本上这样做吗?
    • 是的,你可以用那个控件做同样的事情。将 wx.Notebook 代码换成 aui Notebook 代码应该很简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多