Este tutorial proporciona una guía completa para crear y personalizar barras de menú en PyQt5. Cubriremos varios ejemplos, progresando desde una implementación básica hasta funciones más avanzadas, incluyendo la adición de iconos y elementos de menú seleccionables. Al final, podrá crear menús robustos y fáciles de usar para sus aplicaciones PyQt5.
Tabla de contenido:
- Creando una barra de menú básica
- Añadiendo iconos a los elementos del menú
- Implementando elementos de menú seleccionables
- Creando submenús
- Añadiendo atajos de teclado
- Menús contextuales
1. Creando una barra de menú básica
Esta sección muestra el proceso fundamental de agregar una barra de menú a su aplicación PyQt5 y rellenarla con menús y acciones. Este ejemplo crea un simple menú «Archivo» con las opciones «Nuevo», «Abrir» y «Salir».
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Ejemplo de barra de menú PyQt5")
menubar = self.menuBar()
file_menu = menubar.addMenu("Archivo")
new_action = QAction("Nuevo", self)
open_action = QAction("Abrir", self)
exit_action = QAction("Salir", self)
file_menu.addAction(new_action)
file_menu.addAction(open_action)
file_menu.addSeparator()
file_menu.addAction(exit_action)
exit_action.triggered.connect(QApplication.instance().quit)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
2. Añadiendo iconos a los elementos del menú
Añadir iconos mejora la experiencia del usuario. Esta sección muestra cómo incorporar iconos en los elementos de su menú.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
from PyQt5.QtGui import QIcon
# ... (clase MainWindow del ejemplo anterior) ...
new_action.setIcon(QIcon("new.png")) # Reemplace con la ruta de su icono
open_action.setIcon(QIcon("open.png")) # Reemplace con la ruta de su icono
exit_action.setIcon(QIcon("exit.png")) # Reemplace con la ruta de su icono
# ... (resto del código del ejemplo anterior) ...
Recuerde reemplazar `»new.png»`, `»open.png»` y `»exit.png»` con las rutas reales a sus archivos de iconos. Asegúrese de que los iconos estén en el mismo directorio que su script de Python o proporcione la ruta completa.
3. Implementando elementos de menú seleccionables
Los elementos de menú seleccionables permiten a los usuarios activar o desactivar las opciones. Este ejemplo demuestra su creación y gestión.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
# ... (clase MainWindow del ejemplo anterior) ...
toolbar_action = QAction("Mostrar Barra de Herramientas", self, checkable=True)
toolbar_action.setChecked(True)
file_menu.addAction(toolbar_action)
toolbar_action.triggered.connect(self.toggle_toolbar)
def toggle_toolbar(self, checked):
print(f"Visibilidad de la barra de herramientas: {checked}") # Reemplace con la lógica de su barra de herramientas
# ... (resto del código del ejemplo anterior) ...
4. Creando submenús
Organice sus elementos de menú de forma lógica con submenús.
# ... (dentro de __init__ de MainWindow) ...
edit_menu = menubar.addMenu("Editar")
undo_action = QAction("Deshacer", self)
redo_action = QAction("Rehacer", self)
edit_menu.addAction(undo_action)
edit_menu.addAction(redo_action)
# ...
5. Añadiendo atajos de teclado
Mejore la usabilidad con atajos de teclado.
# ... (dentro de __init__ de MainWindow) ...
exit_action.setShortcut("Ctrl+Q")
# ...
6. Menús contextuales
Implemente menús contextuales (clic derecho).
# ... (dentro de __init__ de MainWindow) ...
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.show_context_menu)
def show_context_menu(self, pos):
menu = QMenu(self)
copy_action = QAction("Copiar", self)
paste_action = QAction("Pegar", self)
menu.addAction(copy_action)
menu.addAction(paste_action)
menu.exec_(self.mapToGlobal(pos))
# ...
Este tutorial ampliado proporciona una base más completa para trabajar con barras de menú en PyQt5. Recuerde instalar PyQt5 usando `pip install PyQt5`. Puede ampliar estos ejemplos para crear menús aún más complejos y con más funciones para sus aplicaciones.