我在一个标签栏里有两个标签,我设置了一个信号,当点击时,它将运行一个函数。我设置了一个信号,当点击时,它会运行一个函数。该函数调用当前索引并打印出来。
为什么打印出来的是它曾经在的页面的索引,而不是当前的?
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_())
缩进有点奇怪,不知道为什么会这样,但还是能用。
这不是错误,而是正常行为。当tabbar被按下的时候,索引就会被获取,tabBarClicked的信号就会发出,然后currectIndex就会被改变,然后在信号发出和currectIndex更新之间有一段时间,也就是在那一刻,你会产生印象。如果你想得到被按下的tab的索引,那么就使用信号信息。
def tab_push(self, index):
print(index)