为什么QTabBar给我错误的索引号?

时间:2020-05-25 18:54:17

标签: python python-3.x pyqt5 pyside2

所以我在标签栏中有两个标签。我已经设置了一个信号,以便在单击时可以运行一个功能。该函数将调用当前索引并进行打印。

为什么打印输出给我它曾经在但当前不在的页面的索引?

import sys
from PySide2.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        self.tabs = QTabBar()
        self.tabs.addTab("Main Menu")
        self.tabs.addTab("Network Menu")

        layout = QHBoxLayout()
        layout.addWidget(self.tabs)

        self.tabs.tabBarClicked.connect(self.tab_push)
        self.setLayout(layout)

    def tab_push(self):
        x = self.tabs.currentIndex()
        print(x)

app = QApplication(sys.argv)

window = Window()
window.show()

sys.exit(app.exec_())

缩进有点奇怪,不确定为什么会这样,但是仍然有效。

1 个答案:

答案 0 :(得分:3)

这不是错误,而是正常行为:当按下标签栏时,获取索引,发出信号tabBarClicked,然后更改currentIndex,然后在发出信号与更新currectIndex之间有一段时间,在那一刻,您就给人留下了深刻的印象。如果要获取按下的选项卡的索引,请使用信号信息:

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