您的位置:

pyqt5designer详解

一、简介

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_()