2017-04-24 128 views
-1

我只是学习用PyQt编程GUI。我试图制作的图形用户界面也是一个Arduino与Pyserial库的价值。我得到它的工作,但在几个发送后,GUI冻结。 我在某处读取线程可以解决这个问题,所以我尝试了这一点,但我无法弄清楚如何从主线程发送工作线程的值。例如,我想发送123号的工作线程。我如何去做这件事?将值发送给工作线程PyQt?

+1

请添加一段代码,以便更好地理解。 – VMRuiz

回答

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),然后终止应用程序的执行。 希望它有帮助!

+0

嘿,这个方法确实有效。我的Arduino代码也有问题。仍然想知道是否有办法在您每次发送价值时不必打开线程。谢谢! –

+0

@Konnenhom先生其实我想我可以为你推荐一个解决方案,如果你愿意的话。 – Szabolcs

+0

那太棒了! –