主从窗口信息传递
1.前言
在做大创项目时,需要点开一个窗口进行参数设置,设置完成后,需要将修改后的参数返回给主窗口,所以需要两个窗口进行信号的联系。本文就是解决子窗口传递信息给主窗口。
2.主窗口
在这里只实现功能的代码。
设置按钮连接的方法,点击按钮后,将信息传递给子窗口,子窗口内的信号绑定该窗口内的方法,将传递回来的信息进行相关设定。
按钮响应
# 设置按钮
def setting(self):
args = {'图片路径': self.directory, '保存路径': self.output, '置信度': self.conf_thres,
'列车时速': self.speed, '人员姓名': self.username, '路线': self.route, '路线名称': self.route_name}
self.helpWindow = Ui_Help(args=args)
self.helpWindow.signalSte.connect(self.setArgs)
self.helpWindow.show()
return
信号绑定方法
# 更新设置
def setArgs(self, args):
self.output = args['保存路径']
self.conf_thres = args['置信度']
self.speed = args['列车时速']
self.route = args['路线']
self.username = args['人员姓名']
self.route_name = args['路线名称']
return
3. 子窗口
子窗口中只写了涉及到信息传递的方法。
class Ui_Help(QWidget):
signalSte = pyqtSignal(dict) # 自定义一个带参的信号 参数为字典
# 省略init等方法
# 保存按钮,与主窗口进行信息连接。
def saveClick(self):
args = {'保存路径': self.output.text(), '图片路径': self.source.text(), '置信度': self.doubleSpinBox.value(),
'列车时速': self.doubleSpinBox_2.value(), '路线': self.data[self.num][0], '人员姓名': self.lineEdit.text(), '路线名称': self.data[self.num][1]}
self.signalSte.emit(args)
self.close()
return