gpt4 book ai didi

python - 使用 pyside 中的 QWizard 下一个插槽

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:54 32 4
gpt4 key购买 nike

我用 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)

但这不起作用

最佳答案

此连接应该在 QWizardQWizardPage 存在的上下文中完成,但在此之前我们必须移动 QThread 的创建到构造函数,例如在下面的示例中我在 main 中执行:

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_())

关于python - 使用 pyside 中的 QWizard 下一个插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45903540/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com