python GUI庫圖形界面開發(fā)之PyQt5 Qt Designer工具(Qt設(shè)計(jì)師)詳細(xì)使用方法及Designer ui文件轉(zhuǎn)py文件方法
PyQt5是對Qt所有類進(jìn)行封裝, Qt能開發(fā)的東西, PyQt都能開發(fā).
Qt是強(qiáng)大的GUI庫之一, 用C++開發(fā), 并且跨平臺.
PyQt雙許可證, 要么選擇GPL(自由軟件協(xié)議)將代碼開源, 要么選擇商業(yè)許可交商業(yè)許可費(fèi).
PySide擁有LGPL 2.1授權(quán)許可, 可開發(fā) 免費(fèi)開源軟件 和 私有商業(yè)軟件. 把PyQt5代碼切換到PySide2代碼是相當(dāng)容易的, 這也是為什么選擇學(xué)習(xí)PyQt5的原因
準(zhǔn)備工作
安裝PyQt5: pip install pyqt5 安裝Qt工具: pip install pyqt5-tools 配置Qt工具系統(tǒng)環(huán)境變量: Path=C:CodePython_Virpython1Libsite-packagespyqt5_toolsQt Designer (Qt設(shè)計(jì)師)強(qiáng)大的可視化GUI設(shè)計(jì)工具, 幫助我們快速開發(fā)PyQt.
它生成UI界面為.ui文件, 通過命令將.ui轉(zhuǎn)為.py文件.
1.啟動Qt Designer執(zhí)行命令designer, 便會彈出以下界面

最常用的就是創(chuàng)建 Widget(通用窗口) 和 MainWindow(主窗口), 這里我們創(chuàng)建一個(gè) MainWindow.
下面簡單介紹下主要功能:

文件保存為xxx.ui文件, 可以用文本及編輯打開編輯, 其數(shù)據(jù)是XML格式的.
2.將xxx.ui文件轉(zhuǎn)為xxx.py文件通過以下命令行執(zhí)行, 即可生成 designer_demo.py 文件
pyuic5 -o designer_demo.py designer_demo.ui3.運(yùn)行布局文件
導(dǎo)入并繼承它
from designer_demo import Ui_MainWindowclass MyDesiger(QMainWindow, Ui_MainWindow):
編寫以下代碼, 放在designer_demo.py同文件夾下, 運(yùn)行即可
import sysfrom PyQt5.QtWidgets import QMainWindow, QApplicationfrom designer_demo import Ui_MainWindowclass 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: 網(wǎng)格布局 (劃分為 行 和 列) Form Layout: 表單布局 (左列標(biāo)簽, 右列控件)Containers 容器
Group Box Scroll Area Tool Box Tab Widge Stacked Widget Frame: 幀容器, 可放入布局 / 控件等 Widget: 窗口容器 MDI Area Dock WidgetItem Widgets 條目控件
List Widget: 列表?xiàng)l目 Tree Widget: 樹形條目 Table Widget: 標(biāo)簽頁條目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: 選擇整數(shù)值 Double Spin Box: 選擇浮點(diǎn)數(shù)值 Time Edit: 時(shí)間選擇框 Data Edit: 日期選擇框 Data/Time Edit: 日期 時(shí)間 選擇框 Dial: 圓形滾動表盤 Horizontal Scroll Bar: 水平滾動條 Vertical Scroll Bar: 垂直滾動條 Horizontal Slider: 水平拖動條 Vertical Slider: 垂直拖動條 Key Sequence Edit: 按鍵編輯框Display Widgets 顯示控件
Label: 標(biāo)簽 (顯示文字 / 圖片等) Text Browser: 文本瀏覽(不可編輯) Graphics View: 繪畫 Calendar Widget: 日歷 LCD Number: LCD數(shù)字顯示屏 Progress Bar: 進(jìn)度條 Horizontal Line: 水平線 Vertical Line: 垂直線 OpenGL Widget: OpenGl控件屬性簡介objectName: 控件對象名
geometry: 相對坐標(biāo)(px) x,y,width,height
sizePolicy: 控件大小策略
Fixed: 控件有 sizeHint 尺寸且尺寸不變 Minimum: 控件有 sizeHint 最小尺寸, 尺寸可變大 Maximum: 控件有 sizeHint 最大尺寸, 尺寸可變小 Preferred: 控件有 sizeHint 期望尺寸, 有minisizeHint最小尺寸, 尺寸可變大 Expanding: 控件有 minisizeHint 最小尺寸, 希望更大尺寸 MinimumExpanding: 控件有 sizeHint 最小尺寸, 希望更大磁村 Ignored: 無視 sizeHint 和 minisizeHint, 按默認(rèn)設(shè)置minimumSize: 最小尺寸
maximumSize: 最大尺寸 (固定尺寸: minimumSize=maximumSize)
font: 字體
cursor: 光標(biāo)
windowTitle: 窗口標(biāo)題
WindowsIcon: 窗口圖標(biāo)
iconSize: 圖標(biāo)大小
toolTip: 提示泡提示信息
statusTip: 狀態(tài)欄提示信息
text: 控件文本
shortcut: 快捷鍵
horizontalSpacer: 水平間距
信號(signal)和槽(slot)PyQt5處理事件有個(gè)signal and slot機(jī)制, 事件觸發(fā)產(chǎn)生信號(signal), 當(dāng)信號發(fā)送(emit())時(shí), 連接的槽(slot)便會執(zhí)行.
信號與槽的連接
sender.signal.connect(receiver.slot)# 例子btn.clicked.connect(self.buttonClicked)快速連接伙伴 (信號槽)
按F4選擇 Edit Signal/Slot 模式 -> 鼠標(biāo)按住控件1拖拽到控件2上松開 -> 彈出對話框, 選擇兩邊連接事件 -> ok -> 按F3切換回 Edit Widgets 模式
演示:

菜單欄通過雙擊 Type Here 添加一級菜單(File), 點(diǎn)開一級菜單雙擊 Type Here 添加動作(New File), 若點(diǎn)了后面的+, 并添加動作(Text File), 則動作(New File)將變成子菜單.

并且我們可以在 動作編輯器 里修改 菜單里的動作


把Label控件拖到窗口上 -> 屬性設(shè)置pixmap
3.編譯成可執(zhí)行代碼
除了需要把.ui文件轉(zhuǎn)成.py文件外, 還需要把.qrc文件轉(zhuǎn)成.py文件
pyrcc5 app.qrc -o app.py
代碼處理
import appself.label.setPixmap(QtGui.QPixmap(':/pic/designer1.png'))
本文簡單介紹了PyQt5 Qt Designer (Qt設(shè)計(jì)師)的使用方法,更多關(guān)于PyQt5 Qt Designer (Qt設(shè)計(jì)師)的使用方法請查看下面的相關(guān)鏈接
相關(guān)文章:
1. js實(shí)現(xiàn)碰撞檢測2. 我所理解的JavaScript中的this指向3. JS實(shí)現(xiàn)前端動態(tài)分頁碼代碼實(shí)例4. 用Spring JMS使異步消息變得簡單5. PHP驗(yàn)證碼工具-Securimage6. spring acegi security 1.0.0 發(fā)布7. 關(guān)于IDEA 2020.3 多窗口視圖丟失的問題8. javascript實(shí)現(xiàn)貪吃蛇小練習(xí)9. Vue 實(shí)現(xiàn)對quill-editor組件中的工具欄添加title10. 一文帶你徹底理解Java序列化和反序列化

網(wǎng)公網(wǎng)安備