我写了一个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)或将第二个链接的例子映射到我的模块吗?
谢谢!