使用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)
但这不是工作
答
这连接应在该QWizard
和QWizardPage
存在的背景下完成的,但在此之前,我们必须在下面的例子中,我在主做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
你这是什么想'QWizard()。next'是?它真的是你想要的吗? – Trilarion