栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、父窗口中打开子窗口 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/i.clicked.connect(self.on/confirm/iClick)

# 标注按钮按下时执行
def on/confirm/iClick(self):
    print("/confirm/i")
    # 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:从父窗口打开子窗口,并向父窗口传递数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号