2017-08-27 5 views
0

私はPysideでウィザードを作成しました。 1ページに、新しいスレッドを作成してインストーラを起動します。 インストーラが準備完了したら、ウィザードは次のボタンをクリックせずに自動的に前進する必要があります。pysideの次のスロットQWizardを使用

私はpysideのドキュメントを読みましたが、私の理解は、QWizardに次の機能があることです。しかし、どうやってこの機能を使うことができますか?

from PySide.QtGui import * 
from PySide.QtCore import * 

... 
... 

class Install(QWizardPage): 

def __init__(self, parent=None): 
    super(Install, self).__init__(parent) 

def initializePage(self): 
    self.setTitle("Install") 
    label = QLabel("Install") 
    label.setWordWrap(True) 
    layout = QVBoxLayout() 
    self.progressBar = QProgressBar(self) 
    self.progressBar.setRange(0,1) 
    self.progressBar.setRange(0,0) 
    layout.addWidget(self.progressBar) 
    layout.addWidget(label) 
    self.setLayout(layout) 
    self.myTask = TaskThread() 
    self.myTask.start() 
    self.myTask.taskFinished.connect(self.Finished) 

def Finished(self): 
    print("finish") 

def isComplete(self): 
    return False 


class TaskThread(QThread): 
taskFinished = Signal() 
def run(self): 
    a = 0 
    while a != 10000: 
     print("test") 
     a += 1 
    self.taskFinished.emit() 

をそして、私は次の機能を使用しようとすると、私は試してみてください:

私のテストが正常に動作しても

self.CallNext = QWizard().next 
self.myTask.taskFinished.connect(self.CallNext) 

そして:

self.myTask.taskFinished.connect(QWizard().next) 

をしかし、これではありません作業

+0

あなたは何をすべきか'QWizard()。next'と思う?それは本当にあなたが欲しいものですか? – Trilarion

答えて

0

これは接続はQWizardQWizardPageが存在する状況で行われる必要がありますが、その前に、私たちは、私がメインで行う次の例では、たとえば、コンストラクタにQThreadの作成を移動する必要があります。

class Install(QWizardPage): 
    def __init__(self, parent=None): 
     super(Install, self).__init__(parent) 
     self.myTask = TaskThread() 
    def initializePage(self): 
     [...] 
     self.setLayout(layout) 

     self.myTask.start() 

if __name__ == '__main__': 

    import sys 

    app = QApplication(sys.argv) 

    wizard = QWizard() 
    install = Install() 
    install.setTitle("installer") 
    install.myTask.taskFinished.connect(wizard.next) 
    wizard.addPage(install) 
    page = QWizardPage() 
    page.setTitle("next Page") 
    wizard.addPage(page) 
    wizard.show() 

    sys.exit(wizard.exec_()) 
+0

できますか?あなたのコードは正常に動作しています。 – Mace

関連する問題