Manipulación de la interfaz gráfica de usuario en Windows con Win32GUI en Python
Introducción
Win32GUI es una biblioteca de Python que permite crear aplicaciones gráficas de usuario (GUI) para Windows. Es una biblioteca simple y fácil de usar, ideal para principiantes.
Instalación
Para instalar Win32GUI, abre una terminal y ejecuta el siguiente comando:
pip install pywin32
Creación de una ventana
Para crear una ventana, usamos la función CreateWindow()
. Esta función tiene varios parámetros, pero los más importantes son:
lpClassName
: El nombre de la clase de la ventana.lpWindowName
: El título de la ventana.dwStyle
: El estilo de la ventana.x
: La posición x de la ventana.y
: La posición y de la ventana.nWidth
: El ancho de la ventana.nHeight
: El alto de la ventana.
Por ejemplo, el siguiente código crea una ventana con el título «Mi ventana»:
import win32gui
# Creamos la ventana
hwnd = win32gui.CreateWindow(
"MyWindowClass",
"Mi ventana",
WS_OVERLAPPEDWINDOW,
0,
0,
640,
480,
None,
None,
None,
None
)
# Mostramos la ventana
win32gui.ShowWindow(hwnd, SW_SHOWNORMAL)
# Esperamos a que se cierre la ventana
win32gui.PumpMessages()
Añadir controles a la ventana
Una vez que hemos creado una ventana, podemos añadirle controles. Los controles más comunes son botones, etiquetas, cuadros de texto, listas, etc.
Para añadir un control a una ventana, usamos la función CreateWindowEx()
. Esta función tiene varios parámetros, pero los más importantes son:
lpClassName
: El nombre de la clase del control.lpWindowName
: El título del control.dwStyle
: El estilo del control.x
: La posición x del control.y
: La posición y del control.nWidth
: El ancho del control.nHeight
: El alto del control.hWndParent
: El identificador de la ventana padre del control.
Por ejemplo, el siguiente código añade un botón a la ventana que hemos creado anteriormente:
import win32gui
# Creamos el botón
hwndButton = win32gui.CreateWindowEx(
0,
"Button",
"Mi botón",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
10,
10,
100,
50,
hwnd,
None,
None,
None
)
# Asociamos un evento al botón
win32gui.SetWindowLong(hwndButton, GWL_WNDPROC, ButtonProc)
# Mostramos la ventana
win32gui.ShowWindow(hwnd, SW_SHOWNORMAL)
# Esperamos a que se cierre la ventana
win32gui.PumpMessages()
Eventos
Los controles pueden generar eventos, como clics, cambios de texto, etc. Para capturar estos eventos, podemos asociar una función al control.
La función que asociamos al control debe tener el siguiente prototipo:
def EventHandler(hwnd, message, wParam, lParam):
# Procesamos el evento
return 0
Por ejemplo, el siguiente código asocia un evento al botón que hemos creado anteriormente:
def ButtonProc(hwnd, message, wParam, lParam):
if message == WM_COMMAND and wParam == IDOK:
# El botón ha sido pulsado
print("El botón ha sido pulsado")
return 0
Conclusión
Win32GUI es una biblioteca sencilla y fácil de usar para crear aplicaciones gráficas de usuario en Windows. Con esta biblioteca, podemos crear ventanas, añadir controles y capturar eventos.