2012-12-20 56 views
2

我正在运行一个wxpython应用程序。在应用程序中,我有一个面板,其中包含一些笔记本页面/选项卡的笔记本。在一个按钮(wx.button)上,我希望能够清除其中一个笔记本页面,并用我的GUI中提供的新信息替换它。在wxpython中添加笔记本页面

我还没有看到任何类型的wx.Notebook的Clear()函数,所以我想到删除该页面并创建一个新的。但是,我似乎无法得到这个工作。这是我的代码...帮助?

def UpdatePanel(self):  

    self.Notebook3.DeletePage(0) 

    self.newpage = scrolled.ScrolledPanel(self.Notebook3, -1) 
    self.newpage.SetupScrolling() 
    self.Notebook3.AddPage(self.newpage,"Page Inserted Here") 

    # self.Notebook3.InsertPage(0,"Page Inserted Here") 
+0

什么不起作用? – BrtH

+0

我想我是不正确地调用该功能。另外,我的新页面信息应该在addpage之前出现,之后我会这样做。我遵循下面的答案,并解决了我如何调用我的添加页面功能。 – mcfly

回答

3

结帐这个代码,看看如何才能使其适应你的:

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

import wx 

class Page(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     t = wx.StaticText(self, -1, "THIS IS A PAGE OBJECT", (20,20)) 

class MainFrame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, title="Notebook Remove Pages Example") 

     pannel = wx.Panel(self) 
     vbox = wx.BoxSizer(wx.VERTICAL) 
     hbox = wx.BoxSizer(wx.HORIZONTAL) 

     self.buttonRemove = wx.Button(pannel, id=wx.ID_ANY, label="DELETE", size=(80, 25)) 
     self.buttonRemove.Bind(wx.EVT_BUTTON, self.onButtonRemove) 
     hbox.Add(self.buttonRemove) 

     self.buttonInsert = wx.Button(pannel, id=wx.ID_ANY, label="CREATE", size=(80, 25)) 
     self.buttonInsert.Bind(wx.EVT_BUTTON, self.onButtonInsert) 
     hbox.Add(self.buttonInsert) 

     vbox.Add(hbox) 

     self.Notebook3 = wx.Notebook(pannel) 
     vbox.Add(self.Notebook3, 2, flag=wx.EXPAND) 

     pannel.SetSizer(vbox) 

     self.pageCounter = 0 
     self.addPage() 

    def addPage(self): 
     self.pageCounter += 1 
     page  = Page(self.Notebook3) 
     pageTitle = "Page: {0}".format(str(self.pageCounter)) 
     self.Notebook3.AddPage(page, pageTitle) 

    def onButtonRemove(self, event): 
     self.Notebook3.DeletePage(0) 

    def onButtonInsert(self, event): 
     self.addPage() 

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