资源简介
:
最近因开发软件需要动态加载一些窗体并镶嵌到主窗体。在查相关博客及网站资料后,发现大部分介绍都是将UI文件转换成.py文件后再进行镶嵌。他们的代码太多太杂,并包含了很多无关紧要的代码,部分代码我没看懂。。。因此通过现有的资料和实际,经过几天修改,几行代码就可以轻松实现。不用将UI文件转换成PY文件,直接使用,代码简单,修改随意。UI文件和代码文件一起打包。主窗体的UI文件在布局上没有仔细布局。
代码片段和文件信息
import sys
from PyQt5.Qt import *
from PyQt5.QtWidgets import *
from PyQt5 import uic # 动态加载窗体引用
def btn_win1():
ui_win1.label.setText(‘我是第一个窗口‘)
def btn_win2():
ui_win2.label.setText(‘我是第二个窗口‘)
if __name__ == “__main__“:
app = QApplication(sys.argv)
# 1、动态UI窗体操作实例
ui = uic.loadUi(‘11.ui‘)
ui_win1 = uic.loadUi(‘1.ui‘)
ui_win1.setstyleSheet(“background-color:red;“)
ui_win1.btn.clicked.connect(btn_win1) # 绑定加载窗体事件
ui_win2 = uic.loadUi(‘2.ui‘)
ui_win2.setstyleSheet(“background-color:green;“)
ui_win2.tbn.clicked.connect(btn_win2) # 绑定加载窗体事件
# 启动窗体后 默认加载win2窗体到hbox布局中
ui.ui_hbox.addWidget(ui_win2)
# 给主窗体按钮添加事件
ui.btn_1.clicked.connect(
lambda: (
ui.ui_hbox.itemAt(1).widget().setParent(None) # 先将hbox布局中的窗体设置为None
ui.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.show()
sys.exit(app.exec_())
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1388 2020-11-05 15:33 窗体镶嵌.py
文件 972 2020-11-05 15:19 1.ui
文件 988 2020-11-05 15:19 2.ui
文件 2000 2020-11-05 15:21 11.ui
----------- --------- ---------- ----- ----
5348 4
评论
共有 条评论