我有 Python GUI,在一个 for 循环中,我从一些 dll 调用函数,该函数返回用于逐行填充 tableWidget 的值。所有这一切都很好,除了我无法在它仍在填充时滚动表(而 dll 函数计算事物 - 每行 7-8 秒)所以我尝试使用这样的线程:
q = Queue.Queue()
for i in (0, numberOfRows):
threading.Thread(target=self.callFunctionFromDLL, args=(arg1,arg2, q)).start()
result = q.get()
... do something with "result" and populate table row....
def callFunctionFromDLL(self, arg1, arg2, q):
result = self.dll.functionFromDLL(arg1, arg2)
q.put(result)
但是直到从 q.get 传递结果之前 GUI 仍然没有响应(functionFromDLL 工作 7-8 秒,并且在 GUI 填充行时我可以滚动表格)。我之前并没有真正使用过线程,所以任何建议或示例如何做到这一点将不胜感激。
我也试过这种方式,同样的事情,当 functionFromDLL 工作时 gui 仍然没有响应:
for i in (0, numberOfRows):
t = threading.Thread(target=self.callFunctionFromDLL, args=(arg1,arg2))
t.start()
t.join()
result = self.result
... do something with "result" and populate table row....
def callFunctionFromDLL(self, arg1, arg2):
self.result = self.dll.functionFromDLL(arg1, arg2)