如何通过名称设置QTabWidget的当前选项卡?

25

PyQt5中的QTabWidget类有一个setCurrentIndex方法,您可以使用它来使特定标签成为活动标签页。但是我似乎找不到按选项卡名称索引的方式(这些名称是在Qt Designer中设置的)。是否有任何直接或间接的方法可以通过名称进行索引呢?

http://doc.qt.io/qt-5/qtabwidget.html#currentIndex-prop

4个回答

25

选项卡名称将成为部件页面的对象名称。当选项卡被添加时,页面将自动重定位到选项卡部件的内部堆栈部件中。这意味着您可以通过以下方式引用该页面:

page = tabwidget.findChild(QWidget, tabname)

可以像这样获取它的索引:

index = tabwidget.indexOf(page)

或者可以直接通过名称设置当前选项卡,例如:

tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))

8

另一种方法是在添加选项卡时记住其索引。然后在代码中稍后重用它:

index = tabWidget.addTab(myWidget)
// ...
tabWidget.setCurrentIndex(index)

7

给定一个tab_name,返回其名称匹配tab_name的标签页索引列表的方法。

def get_indices(tab_name):
    return [index for index in range(tab_widget.count())
        if tab_name == tab_widget.tabText(index)]

使用此函数找到索引后,可以使用标准的PyQt方法。

这不是做这件事情的最佳方法,但有时可能会有用。


1
你可以这样使用 indexOf()
移除你的制表符:
self.tabWidget.removeTab(self.tabWidget.indexOf(self.YOUR_TAB_name))

添加您的选项卡:

self.tabWidget.addTab(self.YOUR_TAB_name, "name"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接