【发布时间】:2018-03-10 14:19:01
【问题描述】:
我有一个 Gui 处于活动状态且 QThread 的情况。 QThread 一直在后台获取和保存数据,它不应该停止这样做。 现在我想在不中断 QThread 或冻结 Gui 的情况下处理来自 QThread 的最新数据。
所以我认为我需要另一个线程来执行此操作?! 如何将其数据传递给另一个线程并对其进行处理?
import sys, random, time
from PyQt5 import QtWidgets
from PyQt5.QtCore import *
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.setWindowTitle('Window')
#getData
self.myGetData = getData()
self.myGetData.start()
self.show()
class getData(QThread):
#This Thread should run all the time
def run(self):
while True:
myNumber = random.randint(0, 100)
#He 'processData Thread'!! Do Something with mynumber!!
time.sleep(1)
class processData(QThread):
def processNumber(self, myNumber):
#Extremly complex code will execute while 'getData' is doing its thing.
newNumber = myNumber * 10
return newNumber
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
sys.exit(app.exec_())
找到了很多关于如何将数据从 QThread 传递到接口(信号)的示例。但反之则不然。 在这种情况下,这些信号让我有点困惑..
【问题讨论】:
-
你见过this吗?它显示了主线程和另一个线程之间的双向通信,这与您所追求的相似。
标签: python python-3.x pyqt5 qthread