Почему QTabBar дает мне неправильный порядковый номер? - PullRequest
2 голосов
/ 25 мая 2020

Итак, у меня есть две вкладки на панели вкладок. У меня есть сигнал, настроенный так, что при нажатии он запускает функцию. Функция вызывает текущий индекс и печатает его.

Почему распечатка дает мне индекс страницы, на которой он БЫЛ, но не в данный момент?

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 Ответ

3 голосов
/ 25 мая 2020

Это не ошибка, а нормальное поведение: при нажатии панели вкладок получается индекс, генерируется сигнал tabBarClicked, затем изменяется currentIndex, затем проходит время между выпуском сигнала и обновлением currectIndex, в тот момент, когда вы производите впечатление. Если вы хотите получить индекс нажатой вкладки, используйте информацию о сигнале:

def tab_push(self, <b>index</b>):
    print(index)
...