PyQt5 Tutorials

Dominando las Barras de Menú PyQt5: Una Guía Completa

Spread the love

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:

  1. Creando una barra de menú básica
  2. Añadiendo iconos a los elementos del menú
  3. Implementando elementos de menú seleccionables
  4. Creando submenús
  5. Añadiendo atajos de teclado
  6. 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) ...

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.

Deja una respuesta

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