En este capítulo del tutorial de Python 3 más PyQt5 verermos como crear barras de herramientas personalizadas para nuestros programas. La Barra de Herramientas se puede estructurar en Menús, Submenús y elementos que pueden llevar asociada una determinada acción, como por ejemplo en un editor común encontramos acciones como abrir un archivo, cerrar un archivo, guarda un archivo, ...
La clase QMainWindow nos permite crear un objeto de la clase QMenuBar() a través del método menuBar().
Para agregar menús o submenús según el caso utilizaremos el método addMenu(QString title) de la clase QMenuBar.
Para agregar acciones a los menús o submenús, crearemos objetos de la clase QAction(QIcon icon, QString text, QObject parent) y posteriormente los agregaremos a través del método addAction(QAction action).
Clase QMenuBar: http://pyqt.sourceforge.net/Docs/PyQt4/qmenubar.html
Clase QAction: http://pyqt.sourceforge.net/Docs/PyQt4/qaction.html
Clase QMenuBar: http://pyqt.sourceforge.net/Docs/PyQt4/qmenubar.html
Clase QAction: http://pyqt.sourceforge.net/Docs/PyQt4/qaction.html
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMessageBox
from PyQt5 import uic
from PyQt5.QtGui import QIcon
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.resize(800, 500) #Tamaño inicial de la ventana 800x500
#Barra de estado
self.statusBar().showMessage("Bienvenid@")
#Objeto menuBar
menu = self.menuBar()
#Menú padre
menu_archivo = menu.addMenu("&Archivo")
#Menú padre
menu_editar = menu.addMenu("&Editar")
#Agregar un elemento acción al menu_archivo
menu_archivo_abrir = QAction(QIcon(), "&Abrir", self)
menu_archivo_abrir.setShortcut("Ctrl+o") #Atajo de teclado
menu_archivo_abrir.setStatusTip("Abrir") #Mensaje en la barra de estado
menu_archivo_abrir.triggered.connect(self.menuArchivoAbrir) #Lanzador
menu_archivo.addAction(menu_archivo_abrir)
#Agregar un elemento acción al menu_archivo
menu_archivo_cerrar = QAction(QIcon(), "&Cerrar", self)
menu_archivo_cerrar.setShortcut("Ctrl+w") #Atajo de teclado
menu_archivo_cerrar.setStatusTip("Cerrar") #Mensaje en la barra de estado
menu_archivo_cerrar.triggered.connect(self.menuArchivoCerrar) #Lanzador
menu_archivo.addAction(menu_archivo_cerrar)
#Agregar un submenú al menú menu_editar
menu_editar_opciones = menu_editar.addMenu("&Opciones")
menu_editar_opciones_buscar = QAction(QIcon(), "&Buscar", self)
menu_editar_opciones_buscar.setShortcut("Ctrl+f") #Atajo de teclado
menu_editar_opciones_buscar.setStatusTip("Buscar") #Mensaje en la barra de estado
menu_editar_opciones_buscar.triggered.connect(self.menuEditarOpcionesBuscar)
menu_editar_opciones.addAction(menu_editar_opciones_buscar)
def menuArchivoAbrir(self):
QMessageBox.information(self, "Abrir", "Acción Abrir", QMessageBox.Discard)
def menuArchivoCerrar(self):
QMessageBox.information(self, "Cerrar", "Acción Cerrar", QMessageBox.Discard)
def menuEditarOpcionesBuscar(self):
QMessageBox.information(self, "Buscar", "Acción Buscar", QMessageBox.Discard)
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec_()

1 comentario:
como puedo crear un inicio de sesion antes de una ventana principal que me contenga el menú?
Publicar un comentario