一、簡介
PyQt5是一個Python語言的GUI框架,可以讓程序員輕鬆創建使用者友好的界面。PyQt5Designer是PyQt5提供的一種可視化界面設計工具,可以讓程序員通過拖拽與設置屬性的方式來快速搭建QT應用的用戶界面。
在使用PyQt5Designer時,程序員只需要用滑鼠拖拽各種控制項,設置控制項的屬性,即可完成一個基本的單窗口應用開發,而不必關心具體的代碼實現方法,大大減輕了程序員的工作量。
from PyQt5 import QtWidgets, uic
app = QtWidgets.QApplication([])
win = uic.loadUi("main_window.ui")
win.show()
app.exec_()
二、可視化設計
使用PyQt5Designer時,可以直接在工具欄中選取各種控制項,並將其拖拽到工作區中。在這個過程中,可以設置每個控制項的屬性,如大小、背景顏色、字體、對齊方式等。此外,還可以放置各種布局控制項,用於管理子控制項的位置和大小。
當控制項和布局全部擺放完畢後,就可以將它們按需求進行分組,修改名稱、調整層級關係等。在修改完畢後,就可以將界面保存為.ui文件,這個文件可以直接在代碼中導入。
from PyQt5 import QtWidgets, uic
app = QtWidgets.QApplication([])
win = uic.loadUi("main_window.ui")
win.show()
app.exec_()
三、事件與槽函數
在PyQt5Designer中,事件與槽函數是界面開發中常用的交互方式。通過PyQt5Designer,可以輕鬆地將控制項與其對應的操作進行關聯,使控制項能夠響應用戶的操作。
首先,在程序中定義槽函數。
from PyQt5 import QtWidgets
def func():
print("Hello World!")
app = QtWidgets.QApplication([])
win = QtWidgets.QWidget()
btn = QtWidgets.QPushButton("Push Me", win)
btn.clicked.connect(func)
win.show()
app.exec_()
然後,在PyQt5Designer中選中控制項,選中”Edit Signals and Slots”。然後對控制項所對應的槽函數與離線槽函數進行綁定,這樣滑鼠在單擊控制項時就會觸發離線槽函數,進而觸發槽函數。
from PyQt5 import QtWidgets, uic
def func():
print("Hello World!")
app = QtWidgets.QApplication([])
win = uic.loadUi("main_window.ui")
win.pushButton.clicked.connect(func)
win.show()
app.exec_()
四、自定義控制項
在實際的開發中,有時需要開發自己的控制項,這時就需要PyQt5Designer中提供的”Promote to…”功能。這個功能可以將一個普通控制項轉換為自定義控制項,並為該控制項指定自己實現的預覽和工作模式。
要用到”Promote to…”功能,需要先將自定義控制項的類定義在.py文件中,然後在PyQt5Designer中選中需要轉換的控制項,點擊右鍵,選擇”Promote to…”,在窗口中填入自定義控制項的類名即可。
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtCore import Qt
class MyWidget(QtWidgets.QLabel):
def __init__(self, parent):
super().__init__(parent)
self.setFixedSize(200, 200)
self.setAlignment(Qt.AlignCenter)
self.setPixmap(QtGui.QPixmap("image.jpg"))
app = QtWidgets.QApplication([])
win = uic.loadUi("main_window.ui")
l = MyWidget(win.centralWidget())
win.show()
app.exec_()
五、調試
在使用PyQt5Designer時,如果遇到一些問題,可以選擇使用Qt Designer的內置調試器,這樣就能清楚地查看Qt Designer與代碼中的控制項之間的連接。
在Qt Designer中,選中需要調試的控制項,然後選擇”Edit Signals and Slots”。在窗口中,可以看到該控制項所對應的槽函數。如果沒有顯示,就需要檢查程序代碼是否正確地與該控制項進行了連接。
from PyQt5 import QtWidgets, uic
def func():
print("Hello World!")
app = QtWidgets.QApplication([])
win = uic.loadUi("main_window.ui")
win.pushButton.clicked.connect(func)
win.show()
app.exec_()
原創文章,作者:IGDOD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371599.html