Две функции одна за другой при нажатии кнопки - Pyside

У меня есть небольшая проблема со скриптом py pyside. Я делаю мастер установки, и я хочу изменить свой текущий виджет в моем стеке виджетов, а затем выполнить полную установку библиотек и т. Д.

Я пробовал два решения:

Первый вот этот:

self.pushButton.clicked.connect(lambda: changepage(self, MainWindow))
self.pushButton.clicked.connect(lambda: makeinstall(self, MainWindow))

и это не работает, окно не меняется, и моя установка запускается.

Второе:

def changepage(self, MainWindow):
     self.stackedWidget.setCurrentIndex(4)
     makeinstall(self, MainWindow)

и это тоже не работает. В двух решениях страница изменяется после установки (после завершения функции, я думаю).

У кого-нибудь было решение запустить две функции, одну за другой в pyside?

С Уважением,

1 ответ

Решение

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

def changepage(self, MainWindow):
    self.stackedWidget.setCurrentIndex(4)
    QtGui.qApp.processEvents()

Или, если это не сработает, попробуйте использовать однократный таймер для запуска установщика:

    QtCore.QTimer.singleShot(0, lambda: makeinstall(self, MainWindow))
Другие вопросы по тегам