资源简介

       最近因开发软件需要动态加载一些窗体并镶嵌到主窗体。在查相关博客及网站资料后,发现大部分介绍都是将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


评论

共有 条评论