pyqt5 动态镶嵌ui窗体
pyqt5 动态镶嵌ui窗体
一、背景
最近因开发软件需要动态加载一些窗体并镶嵌到主窗体。在查相关博客及网站资料后,发现大部分介绍都是将UI文件转换成.py文件后再进行镶嵌。他们的代码太多太杂,并包含了很多无关紧要的代码,部分代码我没看懂。。。因此通过现有的资料和实际,经过几天修改,几行代码就可以轻松实现。不用将UI文件转换成PY文件,直接使用,代码简单,修改随意。UI文件和代码文件一起打包。主窗体的UI文件在布局上没有仔细布局。
完整代码下载:
二、核心代码
1、 引用:
from PyQt5 import uic # 动态加载窗体引用
2、动态加载ui窗体:
ui = uic.loadUi('11.ui')
3、插入想要的窗体
ui.btn_1.clicked.connect(lambda: (ui.ui_hbox.itemAt(1).widget().setParent(None), # 先将hbox布局中的窗体设置为Noneui.ui_hbox.insertWidget(1, ui_win1) # 再将hbox处插入一个我们希望显示的窗体))
三、 实现步骤
1、使用Qt Designer创建三个窗口分别为:11.ui; 1.ui; 2.ui(11.ui为主窗体)
A、11.ui 控件布局:
1)、 在窗体内放置两个:widget控件
2)、将右边的widget_2控件放入布局,将布局命名为:ui_hbox(注意:这里的布局只 能使用平面或垂直布局)。
3)、在widge控件里放入两个按钮btn_1和btn_2 分别命名为:我是第一个窗口、我是第二个窗口
B、1.ui和2.ui 布局
在窗体里分别放入:Label控件和PushButton控件
四 代码实现过程
1、初始化三个窗体
ui = uic.loadUi('11.ui')ui_win1 = uic.loadUi('1.ui')ui_win2 = uic.loadUi('2.ui')# 启动窗体后 默认加载win2窗体到hbox布局中ui.ui_hbox.addWidget(ui_win2)
2、给子窗体按钮帮定事件
ui_win1.btn.clicked.connect(btn_win1) # 绑定加载窗体事件ui_win2.setStyleSheet("background-color:green;")ui_win2.tbn.clicked.connect(btn_win2) # 绑定加载窗体事件
3、子窗体事件
def btn_win1():ui_win1.label.setText('我是第一个窗口')
def btn_win2():ui_win2.label.setText('我是第二个窗口')
4、给主窗体按钮绑定事件
# 给主窗体按钮添加事件ui.btn_1.clicked.connect(lambda: (ui.ui_hbox.itemAt(1).widget().setParent(None), # 先将hbox布局中的窗体设置为Noneui.ui_hbox.insertWidget(1, ui_win1) # 再将hbox处插入一个我们希望显示的窗体))ui.btn_2.clicked.connect(lambda: (ui.ui_hbox.itemAt(1).widget().setParent(None),ui.ui_hbox.insertWidget(1, ui_win2)))
到此整个镶嵌UI窗体完成,效果如下图
pyqt5 动态镶嵌ui窗体相关推荐
- Python:PyQt5设计一个文本编辑器窗体程序(附UI窗体和图片素材下载)
hello,大家好,我是wangzirui32,今天我们来学习如何用PyQt5设计一个文本编辑器窗体,开始学习吧! 文章目录 1. UI窗体设计 2. 编写代码 2.1 pyuic生成代码 2.2 修 ...
- python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...
- pyqt5中控件缩放功能_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...
- WPF案例 (六) 动态切换UI布局
原文:WPF案例 (六) 动态切换UI布局 这个Wpf示例对同一个界面支持以ListView或者CardView的布局方式呈现界面,使用控件ItemsControl绑定数据源,使用DataTempla ...
- 窗体分为左右两部分,要求在左边栏点击按钮时,右边动态加载窗体
http://smartsoft.5d6d.com/thread-7420-1-1.html 今天在做项目时候遇到一个问题,窗体分为左右两部分,要求在左边栏点击按钮时,右边动态加载窗体 最后想到用pa ...
- PyQt5 Designer中ui格式转py格式
PyQt5 Designer中ui格式转py格式 添加QTDesigner pycharm中的设置:File>>Settings>>Tools>>External ...
- pyqt5动态删除控件问题
pyqt5 用的滚动条,表格布局,里面动态添加控件可以 但是动态删除,隐藏控件,第一次没反应,只有别的按钮点过后,这个才起作用.原因是因为: 调用了一个点击事件:self.dir_btns[0].cl ...
- pyqt5动态添加按钮
QMainWindow动态添加按钮,添加后需要调用show(),才可以显示出来. self.start_file_aaa = QPushButton(self) self.start_file_aaa ...
- 利用反射,实现动态调用winform窗体
实用前提:在WinForm程序中,通过主窗体的Menu打开不同的窗体 我以前的做法:在Menu的Click事件中,创建打开窗体的对象实例 这样的缺点,我不说了:) 看看利用反射动态调用窗体对象的方法: ...
最新文章
- 什么是 JVM方法区
- Vue+Leaflet-side-by-side插件实现拉帘对比效果
- Android Studio 版本号详解
- mysql 查询执行过程_深入浅出Mysql(一)——sql查询执行过程
- NOIP模拟测试14「旋转子段·走格子·柱状图」
- Java Json xml 格式之间转换(一)
- libjpeg-turbo 2.1.2 交叉编译
- 摩尔庄园服务器维护,《摩尔庄园》6月11日维护公告
- 发票管理小工具(三):PDFMiner vs pdfminer3k vs Pdfminer.six
- 【茶知识】普洱茶四大茶区的区别特点
- JS JavaScript
- 【Matlab笔记】测绘工程专业正算、反算、度分秒转弧度函数
- 致我们终将逝去的2014
- 商家收款码怎样申请做代理?共有两种途径
- oracle查询结果集迭代,Oracle 如何循环查询结果集,进行新增或修改
- 视频教程-桫哥-GOlang基础-01基本程序设计-Go语言
- matlab一阶振型图,[工学]多自由度系统的振动响应.ppt
- 解决apt update 404 Not Found [IP: 91.189.91.15 80] 问题
- ModelArts第二次培训(声音分类和文本分类)
- 王者荣耀转服务器维护,《王者荣耀》转区维护到什么时候 转区维护时间介绍...
热门文章
- 5GNR漫谈16:OFDM的符号定时同步与偏差(STO)
- mysql innodb博客_细聊MySQL的Innodb存储引擎(完)
- 咒术师学院spellcaster university for mac
- Rocky Linux 8.5/CentOS 8 安装Wine
- 戏说PUBER之---LULU与绿猪的故事(1)
- windwos下连接安卓模拟器的命令
- 独孤思维:一月涨粉十万,大自然动态视频成为涨粉利器
- 震惊!微信PC端也能多开!
- 【9】tensorflow下图像预处理之图像批量处理
- python拦截tcp数据包,使用python解码TCP数据包