PyQt5 Qt Designer (Qt設計師)
PyQt5是對Qt所有類進行封裝, Qt能開發的東西, PyQt都能開發.
Qt是強大的GUI庫之一, 用C++開發, 并且跨平台.
PyQt雙許可證, 要麼選擇GPL(自由軟體協定)将代碼開源, 要麼選擇商業許可交商業許可費.
PySide擁有LGPL 2.1授權許可, 可開發 免費開源軟體 和 私有商業軟體. 把PyQt5代碼切換到PySide2代碼是相當容易的, 這也是為什麼選擇學習PyQt5的原因
準備工作
安裝PyQt5:pip install pyqt5
安裝Qt工具: pip install pyqt5-tools
配置Qt工具系統環境變量: Path=C:\Code\Python_Vir\python1\Lib\site-packages\pyqt5_tools
Qt Designer (Qt設計師)
強大的可視化GUI設計工具, 幫助我們快速開發PyQt.
它生成UI界面為.ui檔案, 通過指令将.ui轉為.py檔案.
1.啟動Qt Designer
執行指令designer, 便會彈出以下界面
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMxYTMxYzM0EjNyIDMyAjMvwFMxgDMwIDMy8CXsxWdm9CXzRWYvxGc19CXhlGZl12Lc52YuUGN54yd3d3Lc9CX6MHc0RHaiojIsJye.png)
最常用的就是建立 Widget(通用視窗) 和 MainWindow(主視窗), 這裡我們建立一個 MainWindow.
下面簡單介紹下主要功能:
檔案儲存為xxx.ui檔案, 可以用文本及編輯打開編輯, 其資料是XML格式的.
2.将xxx.ui檔案轉為xxx.py檔案
通過以下指令行執行, 即可生成 designer_demo.py 檔案
pyuic5 -o designer_demo.py designer_demo.ui
3.運作布局檔案
導入并繼承它
from designer_demo import Ui_MainWindow
class MyDesiger(QMainWindow, Ui_MainWindow):
編寫以下代碼, 放在designer_demo.py同檔案夾下, 運作即可
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from designer_demo import Ui_MainWindow
class MyDesiger(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyDesiger, self).__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MyDesiger()
ui.show()
sys.exit(app.exec_())
控件箱簡介
Layouts 布局 (選中控件 -> Lay out(右鍵) -> 選擇布局)
Vertical Layout: 垂直布局
Horizontal Layout: 水準布局
Grid Layout: 網格布局 (劃分為 行 和 列)
Form Layout: 表單布局 (左列标簽, 右列控件)
Containers 容器
Group Box
Scroll Area
Tool Box
Tab Widge
Stacked Widget
Frame: 幀容器, 可放入布局 / 控件等
Widget: 視窗容器
MDI Area
Dock Widget
Item Widgets 條目控件
List Widget: 清單條目
Tree Widget: 樹形條目
Table Widget: 标簽頁條目
Spacers 間隔(透明)
Horizontal Spacer: 水準間隔
Vertical Spacer: 垂直間隔
Buttons 按鈕
Push Button: 按鈕
Tool Button: 工具箱按鈕 (…)
Radio Button: 單選框
Check Box: 多選框
Command Link Button:
Dialog Button Box: Dialog 按鈕 (ok | cancel)
Input Widgets 輸入控件
Combo Box: 下拉框
Font Combo Box: 字型下拉框
Line Edit: 行文本編輯框
Text Edit: 文本編輯框
Plain Text Edit: 文本編輯框
Spin Box: 選擇整數值
Double Spin Box: 選擇浮點數值
Time Edit: 時間選擇框
Data Edit: 日期選擇框
Data/Time Edit: 日期 時間 選擇框
Dial: 圓形滾動表盤
Horizontal Scroll Bar: 水準滾動條
Vertical Scroll Bar: 垂直滾動條
Horizontal Slider: 水準拖動條
Vertical Slider: 垂直拖動條
Key Sequence Edit: 按鍵編輯框
Display Widgets 顯示控件
Label: 标簽 (顯示文字 / 圖檔等)
Text Browser: 文本浏覽(不可編輯)
Graphics View: 繪畫
Calendar Widget: 月曆
LCD Number: LCD數字顯示屏
Progress Bar: 進度條
Horizontal Line: 水準線
Vertical Line: 垂直線
OpenGL Widget: OpenGl
控件屬性簡介
objectName: 控件對象名
geometry: 相對坐标(px) x,y,width,height
sizePolicy: 控件大小政策
Fixed: 控件有 sizeHint 尺寸且尺寸不變
Minimum: 控件有 sizeHint 最小尺寸, 尺寸可變大
Maximum: 控件有 sizeHint 最大尺寸, 尺寸可變小
Preferred: 控件有 sizeHint 期望尺寸, 有minisizeHint最小尺寸, 尺寸可變大
Expanding: 控件有 minisizeHint 最小尺寸, 希望更大尺寸
MinimumExpanding: 控件有 sizeHint 最小尺寸, 希望更大磁村
Ignored: 無視 sizeHint 和 minisizeHint, 按預設設定
minimumSize: 最小尺寸
maximumSize: 最大尺寸 (固定尺寸: minimumSize=maximumSize)
font: 字型
cursor: 光标
windowTitle: 視窗标題
WindowsIcon: 視窗圖示
iconSize: 圖示大小
toolTip: 提示泡提示資訊
statusTip: 狀态欄提示資訊
text: 控件文本
shortcut: 快捷鍵
horizontalSpacer: 水準間距
信号(signal)和槽(slot)
PyQt5處理事件有個signal and slot機制, 事件觸發産生信号(signal), 當信号發送(emit())時, 連接配接的槽(slot)便會執行.
信号與槽的連接配接
sender.signal.connect(receiver.slot)
# 例子
btn.clicked.connect(self.buttonClicked)
快速連接配接夥伴 (信号槽)
按F4選擇 Edit Signal/Slot 模式 -> 滑鼠按住控件1拖拽到控件2上松開 -> 彈出對話框, 選擇兩邊連接配接事件 -> ok -> 按F3切換回 Edit Widgets 模式
示範:
菜單欄
菜單欄通過輕按兩下 Type Here 添加一級菜單(File), 點開一級菜單輕按兩下 Type Here 添加動作(New File), 若點了後面的+, 并添加動作(Text File), 則動作(New File)将變成子菜單.
并且我們可以在 動作編輯器 裡修改 菜單裡的動作
加載資源檔案
1.加載資源
2.使用資源
把Label控件拖到視窗上 -> 屬性設定pixmap
3.編譯成可執行代碼
除了需要把.ui檔案轉成.py檔案外, 還需要把.qrc檔案轉成.py檔案
pyrcc5 app.qrc -o app.py
代碼處理
import app
self.label.setPixmap(QtGui.QPixmap(":/pic/designer1.png"))
本文簡單介紹了PyQt5 Qt Designer (Qt設計師)的使用方法,更多關于PyQt5 Qt Designer (Qt設計師)的使用方法請檢視下面的相關連結