单击按钮时,两个功能一个接一个 - Pyside

时间:2016-08-02 21:03:43

标签: python qt pyside qstackedwidget

我对py pyside脚本有点问题。我创建了一个设置向导,我想在stackwidget中更改当前的widget,然后进行所有librairies安装......

我尝试了两种解决方案:

首先是这一个:

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 个答案:

答案 0 :(得分:0)

连接到信号的插槽称为同步,因此GUI在返回之前不会更新。有很多不同的方法可以解决这个问题,但您可以尝试强制执行这样的更新:

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

如果这不起作用,请尝试使用单次计时器来运行安装程序:

    QtCore.QTimer.singleShot(0, lambda: makeinstall(self, MainWindow))