将值发送到工作线程PyQt?

时间:2017-04-24 14:49:50

标签: python multithreading arduino pyqt pyserial

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

1 个答案:

答案 0 :(得分:0)

初始化时,您可以将参数传递给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),然后终止应用程序的执行。 希望它有所帮助!