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

问题描述 投票:0回答:1

我在一个标签栏里有两个标签,我设置了一个信号,当点击时,它将运行一个函数。我设置了一个信号,当点击时,它会运行一个函数。该函数调用当前索引并打印出来。

为什么打印出来的是它曾经在的页面的索引,而不是当前的?

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_())

缩进有点奇怪,不知道为什么会这样,但还是能用。

python python-3.x pyqt5 pyside2
1个回答
3
投票

这不是错误,而是正常行为。当tabbar被按下的时候,索引就会被获取,tabBarClicked的信号就会发出,然后currectIndex就会被改变,然后在信号发出和currectIndex更新之间有一段时间,也就是在那一刻,你会产生印象。如果你想得到被按下的tab的索引,那么就使用信号信息。

def tab_push(self, index):
    print(index)
© www.soinside.com 2019 - 2024. All rights reserved.