我有这个基本的应用程序工作。它创建一个新线程,然后启动它。然后它使用信号与主线程进行通信,以便发生其他事情。
我的问题是如何将数据从主线程传递到创建的新线程,这部分对我来说真的没有意义。或者还有另一种方法可以来回进行线程化。本质上,主线程和新线程将在应用程序的整个生命周期中运行,因此它们需要来回通信。
作为一个说明,我是一名网络开发人员,因此本机应用对我来说是新手。此外,我仍然是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()
答案 0 :(得分:1)
你不应该继承QThread
。您应该在您创建的主题上发送一个工作人员。
请查看此链接以获取有关Qt中线程的最佳实践:
http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/
该示例使用的是C ++,但可以很容易地转换为Python。
祝你好运!