在PyQt5应用程序中实现QThread

时间:2016-09-28 11:58:32

标签: multithreading python-3.5 pyqt5 qthread

我写了一个PyQt5 GUI(Win7上的Python 3.5)。在它运行时,它的GUI没有响应。为了仍能使用GUI,我尝试使用此答案中的QThread: https://stackoverflow.com/a/6789205/5877928

该模块现在设计如下:

class MeasureThread(QThread):
    def __init(self):
        super().__init__()

    def get_data(self):
        data = auto.data

    def run(self):
        time.sleep(600)
        # measure some things
        with open(outputfile) as f:
             write(things)

class Automation(QMainWindow):

[...]

    def measure(self):
       thread = MeasureThread()
       thread.finished.connect(app.exit)

       for line in open(inputfile):
           thread.get_data()
           thread.start()
每次测量都会调用

measure(),但在inputfile中每行启动一次线程。该模块现在几乎在启动后立即退出(我猜它一次运行所有线程并且不会休眠)但我只希望它在另一个单线程中进行所有测量,因此仍然可以访问GUI。

我也尝试将此应用于我的模块,但无法将其中使用的方法连接到我的方法:http://www.xyzlang.com/python/PyQT5/pyqt_multithreading.html

我以前使用该模块的方式:

class Automation(QMainWindow):

[...]

    def measure(self):
       param1, param2 = (1,2)

       for line in open(inputfile):
           self.measureValues(param1, param2)

    def measureValues(self, param1, param2):
        time.sleep(600)
        # measure some things
        with open(outputfile) as f:
             write(things)

但显然只使用了一个线程。你能帮我找到合适的方法(QThread,QRunnable)或将第二个链接的例子映射到我的模块吗?

谢谢!

0 个答案:

没有答案