如何按名称设置 QTabWidget 的当前选项卡?
How to set current tab of QTabWidget by name?
PyQt5 的 QTabWidget
有一个方法 setCurrentIndex
,您可以使用该方法使特定选项卡成为活动选项卡。我似乎找不到任何方法来按选项卡名称进行索引(我在 Qt Designer 中设置)。有什么方法(直接或间接)改为按名称索引吗?
选项卡名称成为设置为选项卡页面的小部件的对象名称。添加选项卡后,页面将自动重新设置为选项卡小部件的内部堆栈小部件。这意味着您可以像这样获得对页面的引用:
page = tabwidget.findChild(QWidget, tabname)
并像这样获取它的索引:
index = tabwidget.indexOf(page)
或者像这样直接按名称设置当前选项卡:
tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
另一种方法是在添加选项卡时记住选项卡的索引。然后稍后在您的代码中重用它:
index = tabWidget.addTab(myWidget)
// ...
tabWidget.setCurrentIndex(index)
一种为 tab_name returns 提供名称与 tab_name 匹配的选项卡索引列表的方法。
def get_indices(tab_name):
return [index for index in range(tab_widget.count())
if tab_name == tab_widget.tabText(index)]
用这个函数找到索引后,就可以使用标准的PyQt方法了。
这不是最好的方法,但有时可能会有用。
你可以像这样使用 indexOf()
:
删除您的选项卡:
self.tabWidget.removeTab(self.tabWidget.indexOf(self.YOUR_TAB_name))
添加您的标签:
self.tabWidget.addTab(self.YOUR_TAB_name, "name"))
PyQt5 的 QTabWidget
有一个方法 setCurrentIndex
,您可以使用该方法使特定选项卡成为活动选项卡。我似乎找不到任何方法来按选项卡名称进行索引(我在 Qt Designer 中设置)。有什么方法(直接或间接)改为按名称索引吗?
选项卡名称成为设置为选项卡页面的小部件的对象名称。添加选项卡后,页面将自动重新设置为选项卡小部件的内部堆栈小部件。这意味着您可以像这样获得对页面的引用:
page = tabwidget.findChild(QWidget, tabname)
并像这样获取它的索引:
index = tabwidget.indexOf(page)
或者像这样直接按名称设置当前选项卡:
tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
另一种方法是在添加选项卡时记住选项卡的索引。然后稍后在您的代码中重用它:
index = tabWidget.addTab(myWidget)
// ...
tabWidget.setCurrentIndex(index)
一种为 tab_name returns 提供名称与 tab_name 匹配的选项卡索引列表的方法。
def get_indices(tab_name):
return [index for index in range(tab_widget.count())
if tab_name == tab_widget.tabText(index)]
用这个函数找到索引后,就可以使用标准的PyQt方法了。
这不是最好的方法,但有时可能会有用。
你可以像这样使用 indexOf()
:
删除您的选项卡:
self.tabWidget.removeTab(self.tabWidget.indexOf(self.YOUR_TAB_name))
添加您的标签:
self.tabWidget.addTab(self.YOUR_TAB_name, "name"))