【Python】PyQt5 从父窗口中打开子窗口,并向父窗口传递子窗口的信号以及数据。 您所在的位置:网站首页 python子窗口制图 【Python】PyQt5 从父窗口中打开子窗口,并向父窗口传递子窗口的信号以及数据。

【Python】PyQt5 从父窗口中打开子窗口,并向父窗口传递子窗口的信号以及数据。

2023-11-27 19:13| 来源: 网络整理| 查看: 265

一、父窗口中打开子窗口 1.1 用QtDesigner设计子窗口界面

在这里插入图片描述

用PyUIC转化为.py文件 在这里插入图片描述

1.2 编写主窗口函数 方法一:

1、在主窗口中创造一个类,继承子窗口的页面 在这里插入图片描述 2、在主窗口函数中实例化子窗口类 在这里插入图片描述 3、信号槽连接,将按钮和子窗口连接起来(pushButton_6) 在这里插入图片描述 4、在打开子窗口函数中显示 在这里插入图片描述 5、在主窗口运行函数中定义 在这里插入图片描述

方法二:(推荐)

1、在转化好的子窗口.py文件中,写初始化函数,并继承QMainWindow类,同时,在初始化函数里调用页面布局以及显示函数setupUi以及retranslateUi

在这里插入图片描述 2、在主窗口类初始化中,实例化子窗口(否则子窗口和父窗口都会闪退) 在这里插入图片描述 3、同样进行信号槽连接,以及子窗口显示函数

在这里插入图片描述在这里插入图片描述 4. 结束

二、子窗口向父窗口传递信号以及数据 2.1 定义信号

在子窗口类中定义信号,其中,()中可以是需要传递的多个参数的数据类型,可以是int,str等等。

class Ui_configure(QDialog, object): # 定义信号 _signal = QtCore.pyqtSignal() # _signal = QtCore.pyqtSignal(str,str) # 多个参数可以用','隔开 2.2 发射信号

这里使用按钮进行发射,将按钮和发射信号的槽函数连接。当按钮被按下时,发射信号。

# 信号槽连接函数 def signalSlotConnection(self): self.pushButton_confirm.clicked.connect(self.onConfirmClick) # 标注按钮按下时执行 def onConfirmClick(self): print("confirm") # self.measureNum = self.spinBox_measureNum.value() # self.motorNum = self.spinBox_motorNum.value() # 发射信号 self._signal.emit() # 如果需要传递参数,则在括号中传入参数即可。 # self._signal.emit(data_str1, data_str2) 2.3 父窗口接收

在打开子窗口的函数中接收信号和参数,接收到信号时,执行self.addLabel操作

# 打开 参数配置 窗口 def fireupConfig(self): self.ChildConfigure.show() self.ChildConfigure._signal.connect(self.addLabel) def addLabel(self): ... print("接收到信号")

如果是传了参数过来,则执行的函数要有对应的接收参数的数量。

def addLabel(self, par1, par2): ... print("接收到信号,参数1=" + par1 + ",参数2=" + par2) 三、参考

PyQt5:从父窗口打开子窗口,并向父窗口传递数据



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有