Python: instalación y uso de PyQt6, QDesigner, pyuic5-tool

Puedes usar Python nativo para desarrollar interfaces visuales tkinter, pero los marcos nativos son bastante incómodos de usar, por lo que los más populares son QTlos marcos de UI, que QTse desarrollan usando C++lenguajes. Si deseas usar Python, debes encapsularlos, por lo que hay PyQtun marco Este marco es extremadamente conveniente y se puede ejecutar en múltiples terminales.

1. Instale el marco PyQt

Estoy usando un chip Mac2023 y la versión está desarrollada para su uso . Documentación del sitio web oficial de Qt , https://www.qt.io/download https://riverbankcomputing.com/software/pyqt/downloadApple M1Python3.9IDEPyCharm


QtLas versiones de soporte a largo plazo ( LTS) son Qt 5.15,,, así que primero elegí la descarga de la versión.Qt 6.2Qt 6.5PyQt5

pip install PyQt5

Comenzaron a aparecer problemas y la instalación PyQt5informó un error.Encountered error while generating package metadata

      sipbuild.pyproject.PyProjectOptionException
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

En primer lugar, no es pipun problema. pipLo he actualizado a la última versión. Después de buscar mucha información, básicamente puedo determinar que se Python3.9debe a que la versión es demasiado alta. Necesito usar Python3.7la versión, pero lo hice. No Pythonlo degrade porque todavía hay lugares en la computadora que necesitan usar Pythonesta versión. Sí, degradar aquí causará otros problemas, así que déjelo PyQt5e instálelo a continuación PyQt6.

pip install PyQt6

¡Mucha suerte, se instaló sin problemas! !
Insertar descripción de la imagen aquí

Pruébelo y vea el efecto.

from PyQt6.QtWidgets import *  # 导入PyQt6

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("我是一个Window")
    w.show()
    app.exec()

Todo va bien, está funcionando.

Insertar descripción de la imagen aquí

2. Instale QtDesigner

PyQt6Usar código puro para el diseño es definitivamente inaceptable como desarrollador, especialmente como desarrollador, iOSestoy acostumbrado a usar controles de arrastrar y soltar como StoryBoardy, etc., para el diseño. También existe este método .XibPyQtQtDesigner

QtDesignerDirección de descarga: https://build-system.fman.io/qt-designer-download .

Insertar descripción de la imagen aquí
Seleccione Macla versión para descargar y luego instalar:

Insertar descripción de la imagen aquí

PyCharmInstalar en External Tool, PyCharm -> configuración -> Herramientas -> Herramienta externa

Insertar descripción de la imagen aquí
1.Nombre: complete lo que desee, como QtDesigner; 2.Programa: esta es la ruta de la aplicación
que descargamos anteriormente ; 3.Directorio de trabajo: directorio de trabajo del proyecto, arreglado para completar ;Qt Designer/Applications/Qt Designer.app
$ProjectFileDir$

Puede dejar otros elementos en blanco y hacer clic en OKGuardar. Luego comprobamos si se ha agregado en PyCharmla Toolsbarra :

Insertar descripción de la imagen aquí
QtDesigner ya existe y se ha agregado la descripción. Luego haga clic en este complemento y aparecerán las siguientes 6 vistas. Las más útiles se entienden básicamente por su nombre:
Insertar descripción de la imagen aquí

Haga clic en el botón en la vista central Createpara crear una ventana o widget:

Insertar descripción de la imagen aquí

Hay un widget en el medio, arrastré dos QLabely QLineEdituno QPushButton. Por supuesto, puedes arrastrar cualquier componente a voluntad y hacer clic en Guardar:

Insertar descripción de la imagen aquí
Guarde en el escritorio y .uise generará un archivo, a saber my_widget.ui:

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Arrastramos este archivo a nuestro proyecto.

Insertar descripción de la imagen aquí

Si desea cargar este archivo y lo necesita pyuic5-tool, instale esta biblioteca a continuación.

3.Instalar la herramienta pyuic5

 pip install pyuic5-tool

Resultados de la instalación

(venv) sunshiyu@sunshiyudeMacBook-Pro-2 gui-demo % pip3 install pyuic5-tool
Collecting pyuic5-tool
  Downloading pyuic5_tool-0.0.1-py3-none-any.whl (9.8 kB)
Installing collected packages: pyuic5-tool
Successfully installed pyuic5-tool-0.0.1

Afortunadamente, Python3.9la instalación se realizó correctamente. Bien, continuemos cargando el my_test.uiarchivo anterior:

import sys

from PyQt6.QtCore import *
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6 import uic


if __name__ == '__main__':
    pass
    app = QApplication(sys.argv)
    mw = uic.loadUi("./my_test.ui")  # 加载.ui文件,传入其所在路径即可
    mw.show()
    app.exec()

Pensamos, ¿no sería mejor si pudiéramos my_test.uiconvertir archivos en archivos? .pySí, podemos lograrlo, a continuación instalamos el segundo complemento:

Insertar descripción de la imagen aquí

Muy similar a QtDesigner, completa los datos:

1.Nombre: escríbalo casualmente, como pyUIC;
2.Programa: esta es pyuic5-toolla ruta que instalamos, la mía está en venv; /Users/sunshiyu/Desktop/其他/Python/gui-demo/venv/bin/pyuic63.Argumentos
: básicamente también es una forma fija de escribir $FileName$ -o $FileNameWithoutExtension$.py;
4.Directorio de trabajo: ruta de trabajo$FileDir$

pyuic6El camino es:
Insertar descripción de la imagen aquí

Haga clic en OK, utilizamos el mismo método para verificar si se ha agregado el complemento:

Insertar descripción de la imagen aquí

Obviamente se ha agregado exitosamente. Ahora haga clic derecho en my_test.uiel archivo -> External Tools-> pyUICy haga clic en el complemento pyUIC. Se generará un archivo en el mismo directorio my_test,py, como se muestra a continuación:

Insertar descripción de la imagen aquí
El código generado es el siguiente:

# Form implementation generated from reading ui file 'my_test.ui'
#
# Created by: PyQt6 UI code generator 6.5.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(491, 378)
        self.pushButton = QtWidgets.QPushButton(parent=Form)
        self.pushButton.setGeometry(QtCore.QRect(190, 270, 113, 32))
        self.pushButton.setObjectName("pushButton")
        self.label = QtWidgets.QLabel(parent=Form)
        self.label.setGeometry(QtCore.QRect(40, 30, 60, 16))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(parent=Form)
        self.label_2.setGeometry(QtCore.QRect(40, 60, 60, 16))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(parent=Form)
        self.lineEdit.setGeometry(QtCore.QRect(100, 30, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(parent=Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(100, 60, 113, 21))
        self.lineEdit_2.setObjectName("lineEdit_2")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "点击"))
        self.label.setText(_translate("Form", "账号:"))
        self.label_2.setText(_translate("Form", "密码:"))

Supongo que te gusta

Origin blog.csdn.net/SSY_1992/article/details/132766289
Recomendado
Clasificación