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
- Creando un Botón
- Estilizando el Botón
- Gestionando los Clics del Botón: Señales y Ranuras
- Integrando con QLabel: Mostrando Información
- 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.