English 中文(简体)
GUI在使用PyQt和Qthread的情况下非常缓慢。
原标题:GUI is very sluggish using PyQt and Qthreads

我在利用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
最佳回答

在工人的read体中添加qApp.processEvents()似乎可以解决这个问题。

问题回答

解决办法是让工人对信号的透视频率降低,但我要迅速更新进展情况。

由于人类反应速度比电脑处理速度要慢得多,这是最佳解决办法,至少可能是最简单的解决办法。 即便“全球倡议”只是每一次重新启动一次,即第二次倡议的第1/10-~1/30号决议,你仍然可以取得“最新进展”。





相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签