Две функции одна за другой при нажатии кнопки - 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))