使用pyside

问题描述:

的QWizard一个时隙我已经创建了Pyside的向导。 在一页上,我创建了一个新线程,它启动一个安装程序。 当安装程序准备就绪后,向导会自动往前走,不点击下一步按钮。使用pyside

我读过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

这连接应在该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