使用线程或多处理更新QProgressBar

时间:2012-01-23 15:17:36

标签: python multithreading pyqt4 multiprocessing

import sys, time
import multiprocessing, threading
from PyQt4.QtGui import QApplication, QProgressBar
from PyQt4.QtCore import pyqtSignal

class Bar(QProgressBar):
    mysignal = pyqtSignal(int)

    def __init__(self, parent=None):
        super(Bar, self).__init__()
        self.mysignal.connect(self.set_value)

        #threading.Thread(target=self.thread_func).start()
        #multiprocessing.Process(target=self.thread_func).start()

    def set_value(self, x):
        self.setValue(x)

    def thread_func(self):
        for i in range(101):
            self.mysignal.emit(i)
            time.sleep(1)

app = QApplication(sys.argv)
bar = Bar()
bar.show()
app.exec_()

我应该澄清一点,我几乎不了解线程和多处理。

使用上面的示例,我尝试从第二个线程或进程更新进度条值。 (好吧,我的目的不仅仅是更新值,而是一个例子)。使用线程模块正常工作。另一方面,对于多处理模块,我没有预期的结果。

为什么会发生这种情况,我该怎么做才能解决它?

提前致谢。

0 个答案:

没有答案