向工作线程 PyQt 发送值?

Send value to worker thread PyQt?

我正在学习使用 PyQt 编写 GUI。我试图制作的 GUI 也通过 Pyserial 库向 Arduino 发送一个值。我让它工作了,但在发送了几次之后,GUI 冻结了。 我在某处读到线程可以解决这个问题,所以我尝试了这个但我无法弄清楚如何从主线程向工作线程发送一个值。例如,我也想将数字 123 发送到工作线程。我该怎么做?

你可以在初始化的时候给QThread传一个参数,像这样:

import sys
from PyQt4 import QtGui, QtCore

class FooThread(QtCore.QThread):

    def __init__(self, foo):
        super(FooThread, self).__init__()
        self.foo = foo

    def run(self):
        print self.foo    

def main():

        app = QtGui.QApplication(sys.argv) 
        foo_thread = FooThread('foo')
        foo_thread.start()
        foo_thread.finished.connect(QtGui.qApp.exit)
        sys.exit(app.exec_())


if __name__ == '__main__':
    main()

此代码段将创建一个 PyQt 应用程序,然后启动一个线程打印出传递给其构造函数的参数(在上面的示例中它打印 foo),然后终止应用程序的执行。 希望对您有所帮助!