Tutorial de PyQt5 - Pulsador

Jinku Hu 15 febrero 2024
  1. Botón PyQt5 - QPushButton
  2. Estilo del conjunto de widgets de etiquetas PyQt5 QLabel
  3. Evento de clic en la etiqueta PyQt5 QLabel Label
Tutorial de PyQt5 - Pulsador

El widget QPushButton es un botón de comando en PyQt5. El usuario lo pulsa para ordenar al PC que realice alguna acción específica, como Apply, Cancel y Save.

Botón PyQt5 - QPushButton

import sys
from PyQt5 import QtWidgets


def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()

    buttonA = QtWidgets.QPushButton(windowExample)
    labelA = QtWidgets.QLabel(windowExample)

    buttonA.setText("Click!")
    labelA.setText("Show Label")

    windowExample.setWindowTitle("Push Button Example")

    buttonA.move(100, 50)
    labelA.move(110, 100)

    windowExample.setGeometry(100, 100, 300, 200)
    windowExample.show()
    sys.exit(app.exec_())


basicWindow()

Dónde,

buttonA = QtWidgets.QPushButton(windowExample)

El buttonA es el QPushButton de QtWidgets y debería ser añadido a la ventana windowExample igual que las etiquetas introducidas en los últimos capítulos.

buttonA.setText("Click!")

Establece que el texto de buttonA es Click!.

Botón PyQt5

En realidad no va a hacer nada.

Estilo del conjunto de widgets de etiquetas PyQt5 QLabel

El estilo del widget QLabel de PyQt5, como el color de fondo, la familia de fuentes y el tamaño de las mismas, se puede establecer con el método setStyleSheet. Funciona como una hoja de estilo en CSS.

buttonA.setStyleSheet(
    "background-color: red;font-size:18px;font-family:Times New Roman;"
)

Establece buttonA con los siguientes estilos,

Estilo Valor
background-color red
font-size 18px
font-family Times New Roman

Es conveniente establecer los estilos en PyQt5 porque es similar a CSS.

import sys
from PyQt5 import QtWidgets


def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()

    buttonA = QtWidgets.QPushButton(windowExample)
    labelA = QtWidgets.QLabel(windowExample)

    buttonA.setStyleSheet(
        "background-color: red;font-size:18px;font-family:Times New Roman;"
    )

    buttonA.setText("Click!")
    labelA.setText("Show Label")

    windowExample.setWindowTitle("Push Button Example")

    buttonA.move(100, 50)
    labelA.move(110, 100)

    windowExample.setGeometry(100, 100, 300, 200)
    windowExample.show()
    sys.exit(app.exec_())


basicWindow()

Ejemplo de Push Button_setStyleSheet de PyQt5

Evento de clic en la etiqueta PyQt5 QLabel Label

El botón click event está conectado a alguna función específica con el método QLabel.clicked.connect(func).

import sys
from PyQt5 import QtWidgets


class Test(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)

        self.buttonA = QtWidgets.QPushButton("Click!", self)
        self.buttonA.clicked.connect(self.clickCallback)
        self.buttonA.move(100, 50)

        self.labelA = QtWidgets.QLabel(self)
        self.labelA.move(110, 100)

        self.setGeometry(100, 100, 300, 200)

    def clickCallback(self):
        self.labelA.setText("Button is clicked")


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    test = Test()
    test.show()
    sys.exit(app.exec_())

Cuando se hace clic en el QPushButton buttonA, se activa la función clickCallback para establecer el texto de la etiqueta como Button is clicked.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook