0

py pyside スクリプトに少し問題があります。セットアップ ウィザードを作成し、stackedwidget で現在のウィジェットを変更してから、ライブラリなどをすべてインストールしたい...

私は2つの解決策を試しました:

最初はこれです:

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

ウィンドウが変化せず、インストールが開始されます。

2 つ目は次のとおりです。

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

そしてそれもうまくいきません。2つのソリューションでは、インストール後(機能の終了後)にページが変更されます。

誰かがpysideで2つの関数を次々に実行する解決策を持っていましたか?

よろしく、

4

1 に答える 1

0

シグナルに接続されたスロットは同期的に呼び出されるため、戻るまで GUI は更新されません。これを解決するにはさまざまな方法がありますが、次のように強制的に更新してみてください。

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

または、それがうまくいかない場合は、シングルショット タイマーを使用してインストーラーを実行してみてください。

    QtCore.QTimer.singleShot(0, lambda: makeinstall(self, MainWindow))
于 2016-08-02T22:15:56.093 に答える