从主应用程序线程通信到单独QThread
问题描述:
我有这个基本的应用程序工作。它创建一个新的线程,并启动它。然后它使用信号与主线程进行通信以发生其他事情。从主应用程序线程通信到单独QThread
我的问题是如何将数据从主线程传递到创建的新线程,这部分对我来说确实没有意义。或者还有另外一种方法可以来回穿梭。本质上,主线程和新线程将在应用程序的整个生命周期中运行,因此它们需要来回交流。
作为一个说明我是一个Web开发人员,所以本机应用程序是我的新手。此外,我仍然是新的qt
和pyqt
所以不知道如何做到这一点。
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。 祝你好运!