在wx.Notebook中更改标签标题
我正在尝试使用wxPython,
我有一个带标签的界面(类似笔记本),每个标签基本上都是一个文件列表视图(没错,我在尝试制作一个文件管理器)
这个文件列表是从wx.ListCtrl继承而来的,而这个标签界面是从wx.Notebook继承的
我刚开始做……之前我设置了双击一个文件夹就能进入那个文件夹,但我还想更改标签的标题。
我该怎么做呢?
我有代表文件列表的对象,还有我想设置的标题,
[
编辑 Notebook.SetPageText()
需要一个数字,所以我不能直接把标签对象传给它 ]
我现在的做法是遍历所有标签,直到找到和我的标签匹配的那个:
for tab_id in range(self.GetPageCount()):
if self.GetPage(tab_id) == tab:
self.SetPageText(tab_id, title)
break
不过这似乎有点简单粗暴,难道没有更聪明的方法吗?
3 个回答
-1
因为 .GetPage 返回的是一个 wx.Window,所以我觉得 tab.Label = title
这个写法应该是可以用的。
0
我觉得这样做会有帮助:
notebook.get_tab_label(notebook.get_nth_page(your_page_number)).set_text("Your text")
如果你想随时获取当前标签页的信息,你需要连接“切换页面”的信号,并把页面保存在一个变量里。
2
我不太了解wxPython,但我猜它把C++类的所有方法都封装起来了。
有一个方法叫做 wxNotebook::GetSelection(),它会返回 wxNOT_FOUND 或者选中页面的索引,然后你可以用这个索引去调用 wxNotebook::SetPageText()。
或者你可以用 wxNotebook::GetPage() 这个方法和索引来检查它是否等于 tab。