文章目錄
- 1 pyside6加載ui文件
- 2 使用pyinstaller打包
更多精彩內容 |
---|
👉內容導航 👈 |
👉Qt開發 👈 |
👉python開發 👈 |
1 pyside6加載ui文件
方法1: 直接加載ui文件
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
from PySide6.QtUiTools import QUiLoader
import sysif __name__ == "__main__":app = QApplication(sys.argv) # 創建應用程序對象ui = QUiLoader().load("widget.ui") # 加載ui文件ui.show()sys.exit(app.exec()) # 運行應用程序,并退出
方法2: 將ui文件生成為py源碼,再進行加載
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
import sys
from ui_widget import Ui_Formclass MyWidget(QWidget):def __init__(self):super().__init__()self.ui = Ui_Form()self.ui.setupUi(self)if __name__ == "__main__":app = QApplication(sys.argv) # 創建應用程序對象w = MyWidget() # 創建窗口對象w.show() # 顯示窗口sys.exit(app.exec()) # 運行應用程序,并退出
核心區別
特性 | QUiLoader 動態加載 | 生成 Ui 類靜態加載 |
---|---|---|
實現方式 | 運行時直接解析 .ui 文件,無需預生成代碼 | 通過 pyside6-uic 預生成 Python 類,直接調用 |
依賴文件 | 需保留 .ui 文件 | 只需 .py 文件,無需保留 .ui (部署時可選) |
代碼耦合性 | 低(UI 與邏輯分離) | 較高(UI 類需顯式集成到代碼中) |
UI 修改生效 | 無需重新生成代碼,直接修改 .ui 文件即可 | 需重新運行 pyside6-uic 生成新的 .py 文件 |
優缺點對比
QUiLoader
動態加載
- 優點:
- 靈活性高:修改 UI 后無需重新生成代碼,適合頻繁迭代 UI 的場景。
- 減少代碼量:無需維護生成的 UI 類代碼。
- 資源分離:UI 設計與業務邏輯完全解耦,便于團隊協作。
- 缺點:
- 性能略低:運行時解析 XML 格式的
.ui
文件,比直接調用預生成類稍慢。 - 路徑依賴:需確保
.ui
文件路徑正確,部署時需攜帶該文件。 - 無代碼提示:動態加載的控件需通過
findChild
獲取,IDE 無法提供屬性提示。
- 性能略低:運行時解析 XML 格式的
生成 Ui_MainWindow
類靜態加載
- 優點:
- 性能高效:直接調用預生成代碼,無運行時解析開銷。
- 代碼提示友好:生成的類包含所有控件屬性,IDE 可自動補全(如
self.ui.button
)。 - 部署簡單:只需分發
.py
文件,無需攜帶.ui
文件。
- 缺點:
- 流程繁瑣:每次修改 UI 需重新生成代碼。
- 代碼冗余:生成的 UI 類可能包含大量樣板代碼(但對用戶透明)。
2 使用pyinstaller打包
-
下載地址;
-
使用下面命令進行打包
pyinstaller.exe --paths E:\py\PythonProject\.venv\Lib\site-packages\PySide6 -w -F .\main.py# 在pycharm終端中如果安裝了pyinstaller和pyside6,可以直接使用pyinstaller -w -F main.py
常用選項
選項 | 說明 |
---|---|
-F /--onefile | 生成單個獨立的 .exe 文件(適合簡單腳本) |
-D /--onedir | 默認選項,生成包含依賴的目錄結構(適合復雜項目) |
-w /--windowed | 隱藏控制臺窗口(GUI程序必備) |
-c /--console | 顯示控制臺窗口(命令行程序默認啟用) |
-i <圖標路徑> | 為 .exe 文件設置圖標(支持 .ico 格式) |
-n | 設置生成可執行程序名稱 |
--add-data <源路徑;目標路徑> | 添加額外文件(如配置文件、圖片等) |
--hidden-import <模塊名> | 強制包含未自動檢測的模塊 |
--noconfirm | 覆蓋輸出目錄時不提示確認 |
--clean | 清理臨時文件后再重新構建 |
--paths | 如果你的腳本依賴于不在 Python 路徑中的庫,可以使用這個選項來添加這些路徑。 |
注意:
打包的時候資源文件、UI文件、圖片文件等不會被pyinstaller打包,需要手動復制到dist路徑;