PyQt QProcess开始两次& QProcess:在进程仍在运行时被销毁错误

时间:2014-10-08 09:00:59

标签: pyqt qprocess

我试图获得一些pyqt线程池并处理工作但遇到了一些问题,并且想知道是否有人可以提供帮助。 我已经简化了代码并将其包含在此处。 当您运行以下操作时,似乎started()方法似乎每次进程都会被调用两次,这不是我期望的。

此外,当进程仍在运行时,我收到错误QProcess: Destroyed。 任何人都可以告诉我为什么会发生这种情况? 运行startDetached()使代码可以工作,但由于它没有返回对象,我失去了使用信号的所有能力。 任何帮助将非常感激。 非常感谢

import sys
from PyQt4 import QtGui,QtCore

class Test(object):
    def __init__(self):
        self.elements = []
        for i in range(5):
            self.elements.append(Element(i))

    def run(self):                                                                                                 
        pool = QtCore.QThreadPool()                                                                                
        pool.setMaxThreadCount(1)

        for element in self.elements:
            pool.start(element.worker)                                                                        

        pool.waitForDone()


class Worker(QtCore.QRunnable):
    def __init__(self):                                                                                            
        super(Worker, self).__init__()                                                                             


class Element(object):                                                                                         

    def __init__(self, number):
        self.number = number

        self.worker = Worker()
        self.worker.run = self.run

    def run(self):
        process = QtCore.QProcess()
        def started():
            print "Started"

        process.started.connect(started)
        process.start('echo', 'hello')

app = QtGui.QApplication(sys.argv)

test = Test()
test.run()

widget = QtGui.QWidget()
widget.show()
app.exec_()

0 个答案:

没有答案