主从窗口信息传递


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