PyQt學習記錄
要在界面上 創建一個控件,就需要在程序代碼中 創建 這個 控件對應類 地一個 實例對象。
在Qt系統中,控件(widget)是 層層嵌套 的,除了最頂層的控件,其他的控件都有父控件。
幾個函數
函數move()可以決定一個控件顯示的位置
函數resize()可以決定一個控件顯示的大小
界面處理動作signal和slot(信號槽)
當界面上的一個控件被操作時,就會發出 信號,英文叫 signal,表明一個事件發生了。
我們可以預先在代碼中指定處理這個 signal 的函數,這個處理 signal 的函數叫做 slot。
Qt Desinger的使用
Qt Desinger是一個可視化工具,可以方便地構建Qt界面。
使用該工具構建界面后,生成.ui
文件
Layout布局共有四種,使得界面內容按我們需要進行空間自動適配。
只有整體進行布局之后,整體才會適配,布局時至少選擇兩個控件才可以。
使用Layout布局后可能需要進行微調,因為有些控件的大小可能會發生變化。
控件QWidget屬性中的sizePolicy主要決定了其縮放策略:
水平策略控制某個控件在一個布局中的伸展程度
水平伸展控制一個布局中,各控件所占大小
(垂直同理)
Spacers可以在控件之間增加空格,靈活調整間距
如何構造理想布局?
- 先不用Layout,使用Groupbox把大致位置擺放好
- 布局從小到大,由內層到外層
- 調整大小比例,優先使用Layout的layoutStrentch屬性來控制內部控件所占空間比例
如何正式發布程序
使用PyInstaller
安裝pip install pyinstaller
執行pyinstaller xxx.py --noconsole --hidden-import PySide6.QtXml
即可
這樣就會在當前目錄下產生一個名為 dist 的目錄。里面就有一個名為 xxx 的目錄,我們的可執行程序 xxx.exe 就在里面。
其中
–noconsole 指定不要命令行窗口,否則我們的程序運行的時候,還會多一個黑窗口。 但是我建議大家可以先去掉這個參數,等確定運行成功后,再加上參數重新制作exe。因為這個黑窗口可以顯示出程序的報錯,這樣我們容易找到問題的線索。
–hidden-import PySide6.QtXml 參數是因為這個 QtXml庫是動態導入,PyInstaller沒法分析出來,需要我們告訴它
設置圖標
from PyQt6.QtGui import QIcon
app.setWindowIcon(QIcon('logo.jpg'))
樣式QSS
QSS selector語法 幾乎 和 Web CSS 的 selector語法沒有什么區別
selector:設置哪些特征元素的顯示效果
declaration:具體的效果,顏色、大小等
多線程
兩種實現方法
- Python多線程
- PyQt多線程
界面美化
通過 提升控件 來使用 QFluentWidgets
右擊一個小部件,選擇右擊菜單上的 提升為…
。
提升為
的作用是把原生部件替換成自定義小部件,在例子中是 qfluentwidgets.PushButton。
彈出的對話框上需要填寫自定義的組件名。頭文件是組件庫的包名 qfluentwidgets
,提升的類名稱為 PushButton
。
完成提升后不會在設計師中看到任何變化,保存 ui 文件后運行 py 代碼,可以發現 import 的是 PushButton
。