2011-12-20 33 views
0

我有一个auinotebook,有无论如何得到笔记本中的所有页面的列表?当用户从列表中选择一个动作时,新的页面被添加到笔记本。如果他们再次选择该动作,则不应该再次添加该页面(相反,该页面将被选中)。我看不出如何做到这一点? 谢谢!Python/wxPython:auinotebook获取所有页面

回答

4

假设你正在使用wx.lib.agw.aui.AuiNotebook:

import wx.lib.agw.aui as aui 

class MyNotebook(aui.AuiNotebook): 
    def __getitem__(self, index): 
     ''' More pythonic way to get a specific page, also useful for iterating 
      over all pages, e.g: for page in notebook: ... ''' 
     if index < self.GetPageCount(): 
      return self.GetPage(index) 
     else: 
      raise IndexError 

现在你可以在笔记本的页面重复:

notebook = MyNotebook(parent) 
notebook.AddPage(someWindow, "page 1") 
notebook.AddPage(someOtherWindow, "page 2") 
for page in notebook: 
    ... 
+0

谢谢,这是我一直在寻找对于!作为一个附注,你知道wx.aui和wx.lib.agw.aui有什么不同吗?我只是google了一下,但没有得到任何好的结果... – 2011-12-20 22:11:59

+0

wx.aui是用C++开发的AUI的wxWidgets版本。 wx.lib.agw.aui是由Andrea Gavana开发的Python和wxPython中的AUI的一个端口。两者都包含在wxPython中。 Andrea版本的优点在于它使用Python(更容易调试),并且他接受补丁。 – 2011-12-21 14:32:23

+0

感谢您的信息弗兰克。我想我真正的问题是差异是什么,或者社区是否有推荐的“首选”版本。在wxPython页面上比较和比较它们的wiki会很好。从您的意见中,听起来Andrea的版本可能是首选。谢谢。 – 2012-01-09 22:38:36

0

你没有提到你正在使用哪个AuiNotebook。它是wx.aui还是wx.lib.agw.aui?无论哪种方式,我会认为你可以使用GetChildren()来获取笔记本面板的列表,并根据需要对其进行迭代。还有一个GetPageCount,你可以结合使用GetPageInfo和GetPageText(后三种方法在agw版本中......不知道它们是否包含在另一个中)。请参阅文档以获取更多信息:http://xoomer.virgilio.it/infinity77/AGW_Docs/aui.auibook.AuiNotebook.html#aui-auibook-auinotebook

或者您可以交叉发布到wxPython用户列表。