簡體   English   中英

從主應用程序線程進行通信以分隔QThread

[英]Communicate from Main Application Thread to Seperate 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。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM