Los conceptos básicos de Pyqt5

Los conceptos básicos de Pyqt5
Pyqt5 es un módulo Python para el desarrollo de aplicaciones de escritorio de GUI. Está disponible para múltiples plataformas como Windows, Mac, Linux, iOS y Android. Python ofrece varios módulos que son, de hecho, capaces de desarrollo de la GUI, como Tkinter, Wxpython, Pyside2 y más. Sin embargo, PYQT5 utiliza más de 1000 clases; De hecho, Pyqt5 es un módulo enorme! Además, PYQT5 incluye un diseñador QT, un diseñador gráfico de interfaz de usuario, que facilita aún más la creación de GUI. Se puede usar para crear cualquier cosa, desde reproductores multimedia hasta navegadores web. En este tutorial, aprenderemos los conceptos básicos del módulo PYQT5.

Primero, instalemos PYQT5:

PIP install Pyqt5
PIP Instale las herramientas PYQT5

Paso 1: Crear la ventana en blanco

El primer paso para crear cualquier cosa es configurar la ventana en blanco. La ventana en blanco en sí requiere algunas líneas de código, así que veamos eso.

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow
Sys de importación
de Pyqt5 import qtgui
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()

Establezca la geometría de la ventana usando el método setGeometry (), que toma cuatro argumentos: la posición X inicial, la posición y inicial (en otras palabras, donde aparece la esquina superior izquierda en la pantalla), el ancho y la altura de la ventana.

ser.setGeometry (350, 100, 800, 600)

Establezca el título de la ventana con el método setwindowtitle ().

ser.setwindowtitle ("pyqt5")

Puede establecer el icono usando setWindowiCon (). Tenga en cuenta que el icono debe ser de 64 píxeles por 64 píxeles.

ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))

Cada archivo pyqt5 requiere esta siguiente línea que toma sys.Argv como argumento.

aplicación = qApplication (SYS.argv)

A continuación, cree una instancia de la clase que creamos anteriormente.

Win = Window ()
ganar.espectáculo()

Para salir de la ventana presionando el botón X, necesitamos SYS.Salir (aplicación.exec ()).

sys.Salir (aplicación.exec ())

Este código creará una ventana en blanco. El código en su conjunto se vería así:

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow
Sys de importación
de Pyqt5 import qtgui
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()
ser.setGeometry (350, 100, 800, 600)
ser.setwindowtitle ("pyqt5")
ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))
aplicación = qApplication (SYS.argv)
Win = Window ()
ganar.espectáculo()
sys.Salir (aplicación.exec ())

Paso 2: barra de entrada

A continuación, creemos una barra de entrada. Una barra de entrada es un lugar donde los usuarios pueden agregar texto que podemos recuperar. Las barras de entrada se crean usando QWidgets.QlineEdit (). Obviamente, establecemos su geometría usando el método setGeometry ().

def initui (yo):
ser.input_bar = QtWidgets.Qlineedit (yo)
ser.entrada_BAR.SetGeometry (150, 250, 500, 40)

Eso sí; Todavía tiene que activar la función en el método __init__ de la siguiente manera:

ser.initui ()

El código en su totalidad en este punto se vería así:

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow
Sys de importación
de Pyqt5 import qtgui
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()
ser.setGeometry (350, 100, 800, 600)
ser.setwindowtitle ("pyqt5")
ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))
ser.initui ()
def initui (yo):
ser.input_bar = QtWidgets.Qlineedit (yo)
ser.entrada_BAR.SetGeometry (150, 250, 500, 40)
aplicación = qApplication (SYS.argv)
Win = Window ()
ganar.espectáculo()
sys.Salir (aplicación.exec ())

Paso 3: Crear botones

Ahora, agregemos algunos botones al lienzo en blanco. Entonces, escribamos el código para el botón. Para el botón, usamos qtwidgets.QpushButton (). Como de costumbre, podemos establecer su geometría utilizando el método setGeometry ().

ser.botón1 = QtWidgets.QpushButton ("Show", Self)
ser.botón 1.SetGeometry (275, 350, 200, 50)

Establezca el icono usando el método setiCon ().

ser.botón 1.Seticon (Qtgui.Qicon ("Ratajal.png "))

Establezca el estilo del texto usando el método setstylesheet (). Puede cambiar el color, el peso de fuente y el tamaño de la fuente, entre otros.

ser.botón 1.setstylesheet ("color: negro")
ser.botón 1.setstylesheet ("Font-Weight: Bold")
ser.botón 1.setstylesheet ("Font-Size: 18Pt")

Para obtener el botón para hacer algo cuando se hace clic, debe decirle al botón que necesita activar una función cuando se hace clic. Esto se hace usando clic en.conectar (), donde la función activada se pasa como argumento. En mi caso, es:

ser.botón 1.hecho clic.conectar (yo.Button_clicked)

A continuación, definimos la función a llamar o activar cuando se presiona el botón. Por ahora, lo imprimiremos en la consola.

Def Button_clicked (self):
url_value = self.entrada_BAR.texto()
imprimir (url_value)

El código en su conjunto ahora se vería así:

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow
Sys de importación
de Pyqt5 import qtgui
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()
ser.setGeometry (350, 100, 800, 600)
ser.setwindowtitle ("pyqt5")
ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))
ser.initui ()
def initui (yo):
ser.input_bar = QtWidgets.Qlineedit (yo)
ser.entrada_BAR.SetGeometry (150, 250, 500, 40)
ser.botón1 = QtWidgets.QpushButton ("Show", Self)
ser.botón 1.SetGeometry (275, 350, 200, 50)
ser.botón 1.Seticon (Qtgui.Qicon ("Ratajal.png "))
ser.botón 1.setstylesheet ("color: negro")
ser.botón 1.setstylesheet ("Font-Weight: Bold")
ser.botón 1.setstylesheet ("Font-Size: 18Pt")
ser.botón 1.hecho clic.conectar (yo.Button_clicked)
Def Button_clicked (self):
url_value = self.entrada_BAR.texto()
imprimir (url_value)
aplicación = qApplication (SYS.argv)
Win = Window ()
ganar.espectáculo()
sys.Salir (aplicación.exec ())

Paso 4: Creación de etiquetas

Ahora modifiquemos el comando de presionar el botón usando qlabels. QLabels se usan para agregar texto. Agregamos esto a Def Initui (Self).

ser.etiqueta = qtwidgets.Qlabel (yo)

Establecemos el texto en la etiqueta usando el método setText ().

ser.etiqueta.setText ("Cambie este título haciendo clic en el botón")
ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))

Establecemos la fuente, el tamaño y el peso usando setstylesheet ().Establecemos la fuente, el tamaño y el peso usando setstylesheet ().

ser.etiqueta.setstylesheet ("Font-Weight: Bold")
ser.etiqueta.setstylesheet ("Font-Size: 18Pt")

Y finalmente, actualizamos todo usando el método update ().

ser.etiqueta.actualizar()

Esto crea lo siguiente:

Ahora, podemos cambiar el contenido en la función button_clicked ().

Def Button_clicked (self):

Podemos recuperar lo que el usuario escribe en la barra de texto utilizando el método text ().

url_value = self.entrada_BAR.texto()

Luego podemos cambiar la etiqueta al hacer clic en el botón usando el método setText () y colocarlos en la ubicación correcta usando el método setGeometry ().

ser.etiqueta.setText (url_value)
ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))

El código en su conjunto ahora se vería así:

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow
Sys de importación
de Pyqt5 import qtgui, qtcore
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()
ser.setGeometry (350, 100, 800, 600)
ser.setwindowtitle ("pyqt5")
ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))
ser.initui ()
def initui (yo):
ser.input_bar = QtWidgets.Qlineedit (yo)
ser.entrada_BAR.SetGeometry (150, 250, 500, 40)
ser.botón1 = QtWidgets.QpushButton ("Show", Self)
ser.botón 1.SetGeometry (275, 350, 200, 50)
ser.botón 1.Seticon (Qtgui.Qicon ("Ratajal.png "))
ser.botón 1.setstylesheet ("color: negro")
ser.botón 1.setstylesheet ("Font-Weight: Bold")
ser.botón 1.setstylesheet ("Font-Size: 18Pt")
ser.botón 1.hecho clic.conectar (yo.Button_clicked)
ser.etiqueta = qtwidgets.Qlabel (yo)
ser.etiqueta.setText ("Cambie este título haciendo clic en el botón")
ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))
ser.etiqueta.setstylesheet ("Font-Weight: Bold")
ser.etiqueta.setstylesheet ("Font-Size: 18Pt")
ser.etiqueta.actualizar()
Def Button_clicked (self):
url_value = self.entrada_BAR.texto()
ser.etiqueta.setText (url_value)
ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))
aplicación = qApplication (SYS.argv)
Win = Window ()
ganar.espectáculo()
sys.Salir (aplicación.exec ())

Paso 5: QvboxLayout y QhboxLayout

I noT Agregar un qvboxLayout o QhboxLayout aquí, pero puede si lo desea. QhboxLayout organizará todo en un patrón horizontal, y QvboxLayout lo arreglará verticalmente. Si usa QhboxLayout o QVboxLayout, debe omitir el método setGeometry ().

Si quisiera agregarlo, escribiría lo siguiente en Def Initui (Self). Primero inicializa el diseño usando qvboxLayout ():

ser.diseño = qvboxLayout ()

Luego agrega los widgets que desea dentro de él usando el método addwidget ().

ser.diseño.addwidget (yo.etiqueta)
ser.diseño.addwidget (yo.Input_Bar)
ser.diseño.addwidget (yo.botón 1)

Establece el diseño usando setLayout (), que toma la variable inicializada como argumento.

ser.setLayout (yo mismo.diseño)

No lo necesito aquí porque configuré todo con setGeometry (), así que omitiré esto en mi código. Sin embargo, si lo desea en su código, todo el código se vería así:

de Pyqt5 import qtwidgets
de pyqt5.QtWidgets Import Qapplication, QMainWindow, QhboxLayout, QvboxLayout
Sys de importación
de Pyqt5 import qtgui, qtcore
Ventana de clase (qtwidgets.QWidget):
def __init __ (self):
súper().__en eso__()
#ser.setGeometry (350, 100, 800, 600)
ser.setwindowtitle ("pyqt5")
ser.setwindowicon (Qtgui.Qicon ("Ratajal.png "))
ser.initui ()
def initui (yo):
ser.input_bar = QtWidgets.Qlineedit (yo)
#ser.entrada_BAR.SetGeometry (150, 250, 500, 40)
ser.botón1 = QtWidgets.QpushButton ("Show", Self)
#ser.botón 1.SetGeometry (275, 350, 200, 50)
ser.botón 1.Seticon (Qtgui.Qicon ("Ratajal.png "))
ser.botón 1.setstylesheet ("color: negro")
ser.botón 1.setstylesheet ("Font-Weight: Bold")
ser.botón 1.setstylesheet ("Font-Size: 18Pt")
ser.botón 1.hecho clic.conectar (yo.Button_clicked)
ser.etiqueta = qtwidgets.Qlabel (yo)
ser.etiqueta.setText ("Cambie este título haciendo clic en el botón")
#ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))
ser.etiqueta.setstylesheet ("Font-Weight: Bold")
ser.etiqueta.setstylesheet ("Font-Size: 18Pt")
ser.etiqueta.actualizar()
ser.diseño = qvboxLayout ()
ser.diseño.addwidget (yo.etiqueta)
ser.diseño.addwidget (yo.Input_Bar)
ser.diseño.addwidget (yo.botón 1)
ser.setLayout (yo mismo.diseño)
Def Button_clicked (self):
url_value = self.entrada_BAR.texto()
ser.etiqueta.setText (url_value)
ser.etiqueta.setGeometry (Qtcore.Qrect (200, 80, 500, 100))
aplicación = qApplication (SYS.argv)
Win = Window ()
ganar.espectáculo()
sys.Salir (aplicación.exec ())

Paso 6: Diseñador QT

Lo que es aún mejor con Pyqt5 es que viene con su propio diseñador. Un diseñador es una consola en la que puede diseñar la GUI que desee, y el programa arrojará el código de Python para ello. El diseñador QT viene en el paquete Pyqt5-Tools, y por lo que debe instalarse para que funcione. En el diseñador QT, puede colocar botones, controles deslizantes, etc.... Una vez que los coloca, puede guardar el archivo como un .archivo de usuario.

Una vez que el archivo se guarda como un .archivo de interfaz de usuario, aún necesita convertirlo en un .PY FILE para que Pycharm pueda mostrarlo. Para hacerlo, abra un terminal o un CMD, y escriba:

pyuic5 -x saved_file_name.ui -o python_file.py

Guardé mi archivo como saved_file_name.ui. La terminal arrojará un archivo de Python y lo llamará lo que le pidió. Entonces puedes abrir el .PY FILE en PyCharm y agregarle la lógica.

Recuerde que aunque podemos usar el diseñador para diseñar el diseño de la GUI, aún necesitamos agregar lógica al código, que se realiza únicamente a través del código Python y no el diseñador. Desafortunadamente, el diseñador QT no agrega lógica al código!

En este tutorial, aprendimos sobre los conceptos básicos de PYQT5 y cómo usar el diseñador QT. Aprendimos que podríamos crear pantallas en blanco, agregar botones con QpushButton, agregar barras de entrada usando Qlineedit, agregar texto usando QLabels y organizar todo usando QVBOXLayout/QhboxLayout. De hecho, PYQT5 es un módulo muy grande utilizado para crear una variedad de aplicaciones de escritorio de GUI. Aunque hay muchos módulos para aplicaciones de GUI en Python, la mayoría de las personas eligen PYQT5 porque ofrece una gran variedad de diseños y un diseñador para facilitar las tareas. De hecho, Pyqt5 es un módulo que vale la pena aprender!

Codificación feliz!