我在利用PyQt和Qthreads保持全球需求评估方面遇到问题。 我所做的事情是,从GUI公司那里wn开工人的read子。 工人校对发送了信号,每个周期的数字价值都很高。 在《全球倡议》中,这一信号与更新功能有关,该功能具有数字价值,并重新启动全球倡议。 我使用标准SignAL/SLOT机制。
这似乎都与文件一有关,在PyQt、GUIs和Qthreads的网上发现。 问题在于,工人穿透会引发如此频繁的信号,即工会组织变得非常缓慢。 解决办法是让工人对信号的透视频率降低,但我要迅速更新进展情况。
这似乎完全是标准的,但我无法找到适当的解决办法。 我显然需要改变设计?
希望得到任何帮助。
法典:
import calculator as ca
class GUI(QMainWindow):
def __init__(self, config):
QMainWindow.__init__(self)
self.w_thread = WorkerThread()
self.connect(self.w_thread, SIGNAL("update(PyQt_PyObject)"), self.update_gui)
def start_calc(self):
self.w_thread.start()
def update_gui(self, progress_value):
self.progress_value = progress_value
self.repaint()
def paintEvent(self, event):
paint = QPainter()
paint.begin(self)
paint.drawText(300, 300, "progress: " + str(self.progress_value))
paint.end()
class WorkerThread(QThread):
def __init__(self):
QThread.__init__(self)
def __del__(self):
self.wait()
def run(self):
ca.run_calculations(self)
*************** calculator.py ***************
def run_calculations(thread=None):
while current_cycle < total_cycles:
do_calculations()
if current_cycle % 100 == 0:
thread.emit(SIGNAL("update(PyQt_PyObject)"), current_progress_value)
qApp.processEvents()
current_cycle += 1