En este capítulo del tutorial de Python 3 con PyQt5 veremos como manejar eventos en un objeto MainWindow. Un evento se puede definir como un determinado suceso que ocurre durante la ejecución del programa, este suceso puede ser capturado y realizar una determinada acción o acciones según la necesidad del programador.
La lista de eventos disponibles en PyQt la podéis ver en el siguiente enlace: http://pyqt.sourceforge.net/Docs/PyQt4/qevent.html
Para el ejemplo nos basaremos en la misma ventana (MainWindow) de los dos capítulos anteriores (Capítulo 1 y Capítulo 2), el objetivo es capturar los eventos Show (Cuando la ventana se muestra), Close (Cuando la ventana se cierra) y Move (Cuando la ventana se mueve) y realizar una determinada acción para cada uno de los eventos anteriormente mencionados.
MainWindow.pyw
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from PyQt5 import uic
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt
import ctypes #GetSystemMetrics
#Clase heredada de QMainWindow (Constructor de ventanas)
class Ventana(QMainWindow):
#Método constructor de la clase
def __init__(self):
#Iniciar el objeto QMainWindow
QMainWindow.__init__(self)
#Cargar la configuración del archivo .ui en el objeto
uic.loadUi("MainWindow.ui", self)
self.setWindowTitle("Cambiando el título de la ventana")
#Mostrar la ventana maximizada
self.showMaximized()
#Fijar el tamaño de la ventana
#Fijar el tamaño mínimo
self.setMinimumSize(500, 500)
#Fijar el tamaño máximo
self.setMaximumSize(500, 500)
#Mover la ventana y centrarla en el escritorio
resolucion = ctypes.windll.user32
resolucion_ancho = resolucion.GetSystemMetrics(0)
resolucion_alto = resolucion.GetSystemMetrics(1)
left = (resolucion_ancho / 2) - (self.frameSize().width() / 2)
top = (resolucion_alto / 2) - (self.frameSize().height() / 2)
self.move(left, top)
#Desactivar la ventana
#self.setEnabled(False)
#Asignar un tipo de fuente
qfont = QFont("Arial", 12, QFont.Bold)
self.setFont(qfont)
#Asignar un tipo de cursor
self.setCursor(Qt.SizeAllCursor)
#Asignar estilos CSS
#self.setStyleSheet("background-color: #000; color: #fff;")
#Modificar estilos de uno de los elementos de la ventana
self.boton.setStyleSheet("background-color: #000; color: #fff; font-size: 14px;")
#Evento para cuando la ventana se muestra
def showEvent(self, event):
self.bienvenido.setText("¡¡¡Bienvenido!!!")
#Evento para cuando la ventana se cierra
def closeEvent(self, event):
resultado = QMessageBox.question(self, "Salir ...", "¿Seguro que quieres salir de la aplicación?", QMessageBox.Yes | QMessageBox.No)
if resultado == QMessageBox.Yes: event.accept()
else: event.ignore()
#Evento para cuando la ventana se mueve
def moveEvent(self, event):
x = str(event.pos().x())
y = str(event.pos().y())
self.posicion.setText("x: " + x + " y: " + y)
#Instancia para iniciar una aplicación
app = QApplication(sys.argv)
#Crear un objeto de la clase
_ventana = Ventana()
#Mostra la ventana
_ventana.show()
#Ejecutar la aplicación
app.exec_()
No hay comentarios:
Publicar un comentario