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
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
widget = QWidget()
widget.setWindowTitle('Ventana básica')
widget.show()
Componentes de entrada comunes
QLabel
Muestra texto o imagen:
Ejemplo
label = QLabel('Esto es una etiqueta')
label.setStyleSheet('font-size: 16px; color: blue;')
QLineEdit
Cuadro de entrada de texto de una línea:
Ejemplo
line_edit = QLineEdit()
line_edit.setPlaceholderText('Introduce contenido...')
QTextEdit
Editor de texto multilínea:
Ejemplo
text_edit = QTextEdit()
text_edit.setPlainText('Editor de texto multilínea')
QComboBox
Cuadro de selección desplegable:
Ejemplo
combo = QComboBox()
combo.addItems(['Opción 1', 'Opción 2', 'Opción 3'])
Componentes de botón
QPushButton
Botón normal:
Ejemplo
button = QPushButton('Haz clic en mí')
button.setStyleSheet('background-color: green; color: white;')
QRadioButton
Botón de opción:
Ejemplo
radio1 = QRadioButton('Opción 1')
radio2 = QRadioButton('Opción 2')
QCheckBox
Casilla de verificación:
Ejemplo
check1 = QCheckBox('Selección 1')
check2 = QCheckBox('Selección 2')
Componentes de diseño
QHBoxLayout
Diseño horizontal:
Ejemplo
h_layout = QHBoxLayout()
h_layout.addWidget(QPushButton('Izquierda'))
h_layout.addWidget(QPushButton('Centro'))
h_layout.addWidget(QPushButton('Derecha'))
QVBoxLayout
Diseño vertical:
Ejemplo
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
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
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
tree = QTreeWidget()
tree.setHeaderLabels(['Nombre', 'Valor'])
root = QTreeWidgetItem(tree, ['Nodo raíz'])
child = QTreeWidgetItem(root, ['Nodo hijo', '123'])
QTabWidget
Componente de pestañas:
Ejemplo
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
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
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.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;
}
''')