sábado, 11 de julio de 2015

19 - Python PyQt (Interfaz gráfica) - menuBar (Barra de Herramientas)




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




menubar.pyw

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:

Unknown dijo...

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