資源簡介
:
最近因開發軟件需要動態加載一些窗體并鑲嵌到主窗體。在查相關博客及網站資料后,發現大部分介紹都是將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
評論
共有 條評論