主线程:
class Mywindow(QWidget):
send_BroadDataFromUi = pyqtSignal(dict)
Ui_sendDataTOMachine = pyqtSignal(dict)
def send_BroadDATAToMacnhine1(self):
self.Ui_sendDataTOMachine.emit(self.dict_allloadbroad)
def recv_BroadDATAFromMacnhine1(self, dict_data):
self.dict_allloadbroad = dict_data
子线程
class MachineLoad(QThread):
# start_load_siganl = pyqtSignal(dict) # 此信号的触发是用来接收主线程中的dict_allloadbroad信息
machine1_NeedUIDATA_siganl = pyqtSignal(dict) # 此信号是在主线程中触发,信号链接的是Machine1线程中的recv_DataFromUi函数数据 主-> 子
machine1_SendUIDATA_signal = pyqtSignal(dict) # 此信号是在子线程中触发,信号链接的是主线程中的recv_DataFromUi函数数据 子-> 主
为什么需要两个信号?
因为如果子线程需要获取主线程的数据,主动给主线程发送信号让主线程发送数给子线程,所以在主线程中需要多创建一个信号用来作为中间信号B来进行缓冲。通过B信号再去触发A信号给子线程发送数据。
子线程触发信号C,信号C与主线程函数绑定,用来存取子线程数据。