PyQt5 Tutorials

Botones Push de PyQt5: Guía Completa

Spread the love

Este tutorial proporciona una introducción completa al widget QPushButton de PyQt5 y su interacción con otros elementos principales. Desarrollaremos una implementación básica de botón, explorando técnicas de estilo y manejo de eventos para crear aplicaciones interactivas y visualmente atractivas.

Tabla de Contenidos

  1. Creando un Botón
  2. Estilizando el Botón
  3. Gestionando los Clics del Botón: Señales y Ranuras
  4. Integrando con QLabel: Mostrando Información
  5. Estilo Avanzado con QStyleSheet

1. Creando un Botón

El QPushButton es un bloque fundamental en el desarrollo de GUI con PyQt5. Creemos un botón simple:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Mi Aplicación PyQt5")

button = QPushButton("¡Haz clic!")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Este código crea una ventana que contiene un botón con la etiqueta «¡Haz clic!». El botón está actualmente inactivo; añadiremos funcionalidad en la siguiente sección.

2. Estilizando el Botón

PyQt5 ofrece varias maneras de personalizar la apariencia de tus botones. Podemos cambiar el texto, la fuente e incluso añadir iconos:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QFont, QIcon

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Botón Estilizado")

button = QPushButton("¡Haz clic!")
button.setFont(QFont('Arial', 12)) #establece la fuente
button.setIcon(QIcon('path/to/your/icon.png')) #añade un icono (reemplaza con la ruta de tu icono)
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Recuerda reemplazar 'path/to/your/icon.png' con la ruta real a tu archivo de icono.

3. Gestionando los Clics del Botón: Señales y Ranuras

Para hacer el botón interactivo, usamos señales y ranuras. Una señal se emite cuando ocurre un evento (como un clic de botón), y una ranura es una función que responde a la señal.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Botón Interactivo")

button = QPushButton("¡Haz clic!")
label = QLabel("Botón aún no pulsado.")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window.setLayout(layout)

def on_button_click():
    label.setText("¡Botón pulsado!")

button.clicked.connect(on_button_click) #conecta la señal a la ranura

window.show()
sys.exit(app.exec_())

Este ejemplo conecta la señal clicked del botón a la función on_button_click, la cual actualiza una etiqueta para indicar que el botón ha sido pulsado.

4. Integrando con QLabel: Mostrando Información

Los widgets QLabel son ideales para mostrar texto o imágenes junto a botones. Aquí te mostramos cómo combinarlos:


# (El código de la sección 3 puede extenderse aquí para incluir un QLabel para mostrar información)

(El código de la sección 3 se puede extender fácilmente para incluir un QLabel para mostrar información. Para mayor brevedad, esto no se muestra explícitamente aquí, pero el concepto se demuestra en el ejemplo anterior.)

5. Estilo Avanzado con QStyleSheet

Para estilos más complejos, usa QStyleSheet. Esto te permite aplicar estilos similares a CSS a tus widgets.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Ejemplo QStyleSheet")

button = QPushButton("¡Haz clic!")
button.setStyleSheet("QPushButton { background-color: lightblue; color: darkblue; border-radius: 10px; padding: 10px; }")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Esto usa QStyleSheet para estilizar el botón con un fondo azul claro, texto azul oscuro, esquinas redondeadas y relleno.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *