PyQt5 Tab Widget:如何在鼠标单击时获取活动选项卡窗口的索引?

Posted

技术标签:

【中文标题】PyQt5 Tab Widget:如何在鼠标单击时获取活动选项卡窗口的索引?【英文标题】:PyQt5 Tab Widget: How can I get the index of active tab window on mouse click? 【发布时间】:2020-07-27 19:40:25 【问题描述】:

我有一个带有 2 个标签的标签小部件。点击时如何获取Tab的索引号?

self.tab = QTabWidget()
self.tab.addTab(self.widget1, "Tab1")
self.tab.addTab(self.widget2, "Tab2")

data_entry_tab.tabBarClicked.connect(self.OnTabClicked)

def OnTabClicked(self):
    tab_bar = self.sender()
    # I want to use idx to do some calculation
    idx = ?

【问题讨论】:

【参考方案1】:

您可以使用tabBarClicked 信号:

import sys

from PyQt5 import QtCore, QtGui, QtWidgets, QtWebEngineWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.tabwidget = QtWidgets.QTabWidget()
        self.tabwidget.addTab(QtWidgets.QWidget(), "Tab1")
        self.tabwidget.addTab(QtWidgets.QWidget(), "Tab2")
        self.tabwidget.addTab(QtWidgets.QWidget(), "Tab3")

        self.setCentralWidget(self.tabwidget)

        self.tabwidget.tabBarClicked.connect(self.handle_tabbar_clicked)

    def handle_tabbar_clicked(self, index):
        print(index)

        print("x2:", index * 2)


if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    w = MainWindow()
    w.show()

    sys.exit(app.exec_())

【讨论】:

谢谢!对不起,我是新手。如何使用“索引”作为变量? @jabbarlee 你的问题令人困惑,你想用那个索引做什么?看来你有一个 XY 问题 我想使用该信号 tabBarClicked 并抓取索引以在另一个函数中使用。就像 OnTabClick() 和 self.sender()。 @jabbarlee 您的解释仍然令人困惑,如果您提供minimal reproducible example 那么也许我可以帮助您,否则我将继续前进。 你几乎给出了答案。但是在您的代码中,它会打印索引,但我想将其用作变量。假设我想将索引乘以 2 而不仅仅是打印它。

以上是关于PyQt5 Tab Widget:如何在鼠标单击时获取活动选项卡窗口的索引?的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt5 小部件中检测单击鼠标 - 缺少 mouseClickEvent 函数

QT编程Widget鼠标事件

PyQt5的事件机制

模拟鼠标拖动事件 PyQt5

如何在pyqt5中将按钮移动到另一个框架?

在从 JS 到 PyQt5 的鼠标点击时存储 lat long