Python PyQt – Eventos de Interfaz Gráfica en MainWindow (Mostrar, Cerrar, Mover, …)

Posted by


Python PyQt es un conjunto de herramientas que permite desarrollar interfaces gráficas de usuario (GUI) utilizando la biblioteca Qt de C++, a través de la biblioteca PyQt de Python. En este tutorial, nos enfocaremos en los eventos de la ventana principal (MainWindow) de una aplicación PyQt, como Show, Close y Move.

Para empezar, asegúrate de tener instalado PyQt en tu entorno de desarrollo. Puedes hacerlo fácilmente utilizando pip:

pip install PyQt5

Una vez que hayas instalado PyQt, puedes comenzar a crear una aplicación PyQt con una ventana principal (MainWindow). Aquí tienes un ejemplo de un programa simple que crea una ventana principal y la muestra en la pantalla:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

def main():
    app = QApplication(sys.argv)
    main_window = QMainWindow()
    main_window.setWindowTitle('Ejemplo de MainWindow')
    main_window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

Al ejecutar este código, verás una ventana vacía con el título "Ejemplo de MainWindow" en tu pantalla. Ahora, veamos cómo podemos capturar diferentes eventos de la ventana principal, como Show, Close y Move.

  1. Evento Show: El evento Show se activa cuando la ventana principal se muestra por primera vez. Puedes conectar una función a este evento utilizando el método .showEvent() de la clase QMainWindow. Aquí tienes un ejemplo de cómo puedes capturar el evento Show:
# Conectar el evento Show a una función
def on_show_event():
    print('La ventana se ha mostrado')

# Conectar la señal del evento Show a la función on_show_event
main_window.showEvent = on_show_event

Al agregar este código a tu aplicación, verás que se imprime "La ventana se ha mostrado" cada vez que la ventana principal se muestra en la pantalla.

  1. Evento Close: El evento Close se activa cuando el usuario intenta cerrar la ventana principal, ya sea haciendo clic en el botón de cerrar o utilizando un atajo de teclado. Puedes conectar una función a este evento utilizando el método .closeEvent() de la clase QMainWindow. Aquí tienes un ejemplo de cómo puedes capturar el evento Close:
# Conectar el evento Close a una función
def on_close_event(event):
    print('La ventana se ha cerrado')

# Conectar la señal del evento Close a la función on_close_event
main_window.closeEvent = on_close_event

Al agregar este código a tu aplicación, verás que se imprime "La ventana se ha cerrado" cada vez que el usuario intenta cerrar la ventana principal.

  1. Evento Move: El evento Move se activa cuando la posición de la ventana principal cambia en la pantalla. Puedes conectar una función a este evento utilizando el método .moveEvent() de la clase QMainWindow. Aquí tienes un ejemplo de cómo puedes capturar el evento Move:
# Conectar el evento Move a una función
def on_move_event(event):
    print('La ventana se ha movido a la posición ({}, {})'.format(main_window.pos().x(), main_window.pos().y()))

# Conectar la señal del evento Move a la función on_move_event
main_window.moveEvent = on_move_event

Al agregar este código a tu aplicación, verás que se imprime la posición actual de la ventana principal cada vez que se mueve en la pantalla.

Con estos ejemplos, has aprendido cómo capturar diferentes eventos de la ventana principal (MainWindow) en una aplicación PyQt. Puedes utilizar estos eventos para realizar acciones específicas en tu aplicación, como mostrar mensajes al usuario, guardar la posición de la ventana o realizar operaciones de limpieza antes de cerrar la aplicación. ¡Experimenta y diviértete creando increíbles aplicaciones PyQt con eventos personalizados!

0 0 votes
Article Rating
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@martinbermudez7847
1 month ago

Estoy adentrándome en esto de Python y sus maneras de programar interfaces gráficas. Vengo de lenguajes donde se crean los formularios con el diseñador y luego se les asocia los métodos, eventos, etc. Acá todo tiene que pasar codificado por ese archivo .pyw ? Porque no entiendo para que está ese entorno gráfico y sus propiedades. Saludos

@Peliculas-hd-Spanish
1 month ago

Genio , muy buenos tus videos , cortos y precisos , saludos desde Argentina

@luisangelzabalamartinez843
1 month ago

Votaaa esa cagaá, que eso no sirve!!

@copisatic6066
1 month ago

Excelente video para aprender a diseñar sistemas con interfaz grafica. MUchas gracias. Felicidades Manuel

@migueld.diazh.5830
1 month ago

Muy buenos los videos, todo excelente.
Tengo una duda, le explico. Tengo un MainWindow, en ella tengo varios ComboBoxes, todo eso pertenece a una clase en especifico que tiene su metodo constructor y todo lo que necesita la ventana.

Ademas, tengo otra clase, esta clase contiene otra ventana, ventana que se activa al pulsar un boton en el MainWindow.

Mi pregunta es, ¿Como puedo hacer para pasar la informacion de los ComboBoxes de la ventana 1 hacia la ventana 2? No puedo utilizar herencia porque se activa el metodo constructor de la ventana 1

@kritonsuperman3912
1 month ago

Buen dia sr. Manuel, quisiera saber donde se encuentra las funciones de ventana como showMaximized(), o setMinimumSize() en la documentacion