从主应用程序线程通信到单独QThread

问题描述:

我有这个基本的应用程序工作。它创建一个新的线程,并启动它。然后它使用信号与主线程进行通信以发生其他事情。从主应用程序线程通信到单独QThread

我的问题是如何将数据从主线程传递到创建的新线程,这部分对我来说确实没有意义。或者还有另外一种方法可以来回穿梭。本质上,主线程和新线程将在应用程序的整个生命周期中运行,因此它们需要来回交流。

作为一个说明我是一个Web开发人员,所以本机应用程序是我的新手。此外,我仍然是新的qtpyqt所以不知道如何做到这一点。

import sys 

from PyQt4 import QtGui 
from PyQt4.QtCore import QThread, pyqtSignal 


class Thread(QThread): 
    message_recieved = pyqtSignal(object) 

    def run(self): 
     self.message_recieved.emit('hello') 

class Main(QtGui.QMainWindow): 
    def __init__(self, parent = None): 
     QtGui.QMainWindow.__init__(self,parent) 

     self.initUI() 

     self.thread = Thread() 
     self.thread.message_recieved.connect(self.message) 
     self.thread.start() 

    def message(self, msg): 
     print msg 

    def initUI(self): 
     self.setGeometry(100, 100, 800, 600) 
     self.setWindowTitle("Test App") 

def main(): 
    app = QtGui.QApplication(sys.argv) 

    main = Main() 
    main.show() 

    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main() 

您不应该子类QThread。您应该在您创建的线程上发送工作人员。 查看此链接以获取有关Qt线程的最佳实践: http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/ 示例使用C++,但可以轻松转换为Python。 祝你好运!