Componentes comunes de Python PyQt

PyQt es un kit de herramientas de programación GUI para el lenguaje Python; es el binding de Python del framework de aplicaciones Qt.

Qt es un framework multiplataforma de desarrollo de aplicaciones de interfaz gráfica de usuario en C++, ampliamente utilizado para desarrollar programas GUI.

PyQt proporciona una gran variedad de componentes (Widgets) para construir interfaces de usuario; estos componentes son los módulos básicos para construir aplicaciones GUI.


Componentes de ventana básicos

QMainWindow

QMainWindow es la clase de ventana principal, que proporciona un framework de aplicación estándar:

Ejemplo

from PyQt5.QtWidgets import QMainWindow, QApplication

app = QApplication([])
window = QMainWindow()
window.setWindowTitle('Ejemplo de ventana principal')
window.setGeometry(100, 100, 800, 600)  # x, y, width, height
window.show()
app.exec_()

QWidget

QWidget es la clase base de todos los objetos de interfaz de usuario:

Ejemplo

from PyQt5.QtWidgets import QWidget

widget = QWidget()
widget.setWindowTitle('Ventana básica')
widget.show()

Componentes de entrada comunes

QLabel

Muestra texto o imagen:

Ejemplo

from PyQt5.QtWidgets import QLabel

label = QLabel('Esto es una etiqueta')
label.setStyleSheet('font-size: 16px; color: blue;')

QLineEdit

Cuadro de entrada de texto de una línea:

Ejemplo

from PyQt5.QtWidgets import QLineEdit

line_edit = QLineEdit()
line_edit.setPlaceholderText('Introduce contenido...')

QTextEdit

Editor de texto multilínea:

Ejemplo

from PyQt5.QtWidgets import QTextEdit

text_edit = QTextEdit()
text_edit.setPlainText('Editor de texto multilínea')

QComboBox

Cuadro de selección desplegable:

Ejemplo

from PyQt5.QtWidgets import QComboBox

combo = QComboBox()
combo.addItems(['Opción 1', 'Opción 2', 'Opción 3'])

Componentes de botón

QPushButton

Botón normal:

Ejemplo

from PyQt5.QtWidgets import QPushButton

button = QPushButton('Haz clic en mí')
button.setStyleSheet('background-color: green; color: white;')

QRadioButton

Botón de opción:

Ejemplo

from PyQt5.QtWidgets import QRadioButton

radio1 = QRadioButton('Opción 1')
radio2 = QRadioButton('Opción 2')

QCheckBox

Casilla de verificación:

Ejemplo

from PyQt5.QtWidgets import QCheckBox

check1 = QCheckBox('Selección 1')
check2 = QCheckBox('Selección 2')

Componentes de diseño

QHBoxLayout

Diseño horizontal:

Ejemplo

from PyQt5.QtWidgets import QHBoxLayout, QPushButton

h_layout = QHBoxLayout()
h_layout.addWidget(QPushButton('Izquierda'))
h_layout.addWidget(QPushButton('Centro'))
h_layout.addWidget(QPushButton('Derecha'))

QVBoxLayout

Diseño vertical:

Ejemplo

from PyQt5.QtWidgets import QVBoxLayout, QPushButton

v_layout = QVBoxLayout()
v_layout.addWidget(QPushButton('Arriba'))
v_layout.addWidget(QPushButton('Centro'))
v_layout.addWidget(QPushButton('Abajo'))

QGridLayout

Diseño de cuadrícula:

Ejemplo

from PyQt5.QtWidgets import QGridLayout, QPushButton

grid = QGridLayout()
grid.addWidget(QPushButton('(0,0)'), 0, 0)
grid.addWidget(QPushButton('(0,1)'), 0, 1)
grid.addWidget(QPushButton('(1,0)'), 1, 0)

Componentes avanzados

QTableWidget

Componente de tabla:

Ejemplo

from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem

table = QTableWidget(3, 3)  # 3 filas 3 columnas
table.setHorizontalHeaderLabels(['Columna 1', 'Columna 2', 'Columna 3'])
table.setItem(0, 0, QTableWidgetItem('Dato 1'))

QTreeWidget

Componente de árbol:

Ejemplo

from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem

tree = QTreeWidget()
tree.setHeaderLabels(['Nombre', 'Valor'])
root = QTreeWidgetItem(tree, ['Nodo raíz'])
child = QTreeWidgetItem(root, ['Nodo hijo', '123'])

QTabWidget

Componente de pestañas:

Ejemplo

from PyQt5.QtWidgets import QTabWidget, QWidget

tab = QTabWidget()
tab.addTab(QWidget(), 'Pestaña 1')
tab.addTab(QWidget(), 'Pestaña 2')

Componentes de cuadro de diálogo

QMessageBox

Cuadro de diálogo de mensaje:

Ejemplo

from PyQt5.QtWidgets import QMessageBox

msg = QMessageBox()
msg.setWindowTitle('Aviso')
msg.setText('Este es un cuadro de diálogo de mensaje')
msg.setIcon(QMessageBox.Information)
msg.exec_()

QFileDialog

Cuadro de diálogo de archivo:

Ejemplo

from PyQt5.QtWidgets import QFileDialog

file_name = QFileDialog.getOpenFileName(None, 'Seleccionar archivo', '', 'Archivos de texto (*.txt);;Todos los archivos (*)')

Configuración de estilos

PyQt admite el uso de estilos CSS para embellecer los componentes:

Ejemplo

button = QPushButton('Botón con estilo')
button.setStyleSheet('''
    QPushButton {
        background-color: #4C7EAF;
        border: none;
        color: white;
        padding: 10px 24px;
        text-align: center;
        font-size: 16px;
        margin: 4px 2px;
        border-radius: 8px;
    }
    QPushButton:hover {
        background-color: #4777A6;
    }
'''
)
Otras extensiones