在wx.Notebook中更改标签标题

3 投票
3 回答
3286 浏览
提问于 2025-04-15 11:05

我正在尝试使用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

撰写回答