1. Introducción
Los tres marcos comúnmente utilizados para la GUI de Python son: Tkinter, wxpython, PyQt5
PyQt5 se basa en Qt y es una combinación de Python y Qt, que puede escribir aplicaciones GUI multiplataforma en lenguaje Python
En comparación con Tkiner y wxpython, PyQt5 utiliza la herramienta de visualización integrada Qt Designer para el diseño de la interfaz, que puede desarrollar rápidamente una aplicación GUI poderosa y hermosa.
2. Instalación
Tome Mac OSX como ejemplo, la operación bajo PC es similar.
Primero, instale la aplicación qt dentro del sistema
python学习交流群:660193417###
# 安装qt
brew install qt
Luego, instale las dos bibliotecas dependientes sip y pyqt5 en el entorno virtual de Python
# 安装依赖sip
pip3 install sip
# 安装依赖pyqt5
pip3 install pyqt5
A continuación, configure las herramientas externas en Pycharm y cree dos nuevos comandos: Qt Designer y PyUIC
# Qt Designer 配置
Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app
Working directory:/usr/local/Cellar/qt/5.14.1/libexec
# PyUIC
# Python环境路径
Program:/usr/local/bin/python3.7
# 参数
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
# 路径【固定】
Working directory:$ProjectFileDir$
# Qt Designer 配置
Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app
Working directory:/usr/local/Cellar/qt/5.14.1/libexec
# PyUIC
# Python环境路径
Program:/usr/local/bin/python3.7
# 参数
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
# 路径【固定】
Working directory:$ProjectFileDir$
Entre ellos, en el primer paso de instalar la carpeta de la aplicación Qt, busque los dos archivos Designer.app y libexec, y configúrelos.Dado que
los archivos generados por QtDesigner son archivos *.ui, necesita usar el pyuic en pyqt5 para convertir los archivos
de la interfaz de usuario en archivos de Python.Finalmente, puede abrir rápidamente la interfaz del diseñador y la interfaz de usuario para el archivo py directamente en Pycharm.
3. Introducción a las funciones comunes
QtDesigner es una herramienta de diseño de GUI muy potente. El formato de archivo generado es: *
.ui QtDesigner incluye principalmente las siguientes 6 partes:
Área de interfaz de diseño principal Área
de control Área
de propiedad de control Área
de función de señal y ranura Área
de imagen de recursos Área
de árbol de estructura de control
en,
Área de interfaz de diseño principal: utilizada para la edición de ventanas, el área de visualización final de la GUI
Área de control: contiene controles como texto, cuadros de entrada, selectores, contenedores, etc., que se pueden arrastrar directamente a la ventana para el diseño
Área de propiedades: se utiliza para definir las propiedades del control, incluidos: contenido, tamaño de fuente, ancho y alto
Área de función de señal y ranura: Es muy conveniente especificar un detector de eventos para un control, como: clic, evento de selección, etc.
Área de imágenes de recursos: se utiliza para importar archivos de recursos locales y usarlos en controles, como imágenes
Área de árbol de estructura de control: puede mostrar la relación estructural entre los controles de manera muy intuitiva
4. Toma un ejemplo
Paso 1, arrastramos 3 botones y 2 cuadros de entrada desde el área de control al área de diseño de la interfaz
Paso 2, seleccione el control, haga clic con el botón derecho para agregar propiedades al control, como: contenido del control, nombre del control (equivalente a id) , para Algunas configuraciones de propiedades complejas deben establecerse por separado en el área de propiedades
Después de editar la interfaz de la interfaz de usuario, se generará localmente un archivo *.ui
Paso 3, seleccione el archivo *.ui y use el comando PyUIC en Pycharm para convertir el archivo ui en un archivo py
# ui文件转为py文件
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 790)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(130, 80, 111, 41))
self.pushButton.setObjectName("pushButton")
self.username = QtWidgets.QLineEdit(self.centralwidget)
self.username.setGeometry(QtCore.QRect(260, 80, 271, 41))
self.username.setObjectName("username")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(130, 150, 111, 41))
self.pushButton_2.setObjectName("pushButton_2")
self.password = QtWidgets.QLineEdit(self.centralwidget)
self.password.setGeometry(QtCore.QRect(260, 150, 271, 41))
self.password.setObjectName("password")
self.login = QtWidgets.QPushButton(self.centralwidget)
self.login.setGeometry(QtCore.QRect(260, 230, 141, 61))
self.login.setObjectName("login")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "用户名:"))
self.pushButton_2.setText(_translate("MainWindow", "密码:"))
self.login.setText(_translate("MainWindow", "登录"))
Paso 4, agregue un evento de clic para el botón
Use la forma de control name.signal.connect (función de ranura) para agregar un detector de eventos de clic para el control
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
# 为登录按钮指定事件
# clicked:信号,login_met:槽函数
self.login.clicked.connect(self.login_met)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def login_met(self):
"""
登录事件(槽函数)
:return:
"""
# 用户名输入框的内容
username = self.login.text()
# 密码输入框的内容
password = self.password.text()
print("输入的用户名是:", username, "密码是:", password)
Paso 5, mostrar la interfaz
Finalmente, cree un nuevo archivo py, cree una instancia de un objeto QApplication y muestre la ventana principal creada anteriormente.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
# 界面文件
from temp import *
class CustomUI(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(CustomUI, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
cutomUI = CustomUI()
cutomUI.show()
sys.exit(app.exec_())
Cabe señalar que esta parte del contenido es solo para llamar a la lógica de visualización de la interfaz GUI, y hay pocos cambios en el proceso de desarrollo del proyecto real.
5. Resumen
A través del ejemplo anterior, es muy conveniente usar PyQt5 para construir GUI.La mayor parte del trabajo se puede hacer en QtDesigner, luego regresar a Pycharm, convertir a archivo py, escribir señales y funciones de ranura, y desarrollar rápidamente la interfaz de usuario de gráficos GUI.