Tkinter Tutorials

Cerrar ventanas Tkinter con botones: Guía completa

Spread the love

Tkinter es una biblioteca popular de Python para crear interfaces gráficas de usuario (GUI). Una tarea común es agregar un botón que permita a los usuarios cerrar la ventana limpiamente. Este artículo explora varios métodos para lograr esto, destacando sus diferencias y recomendando las mejores prácticas.

Tabla de contenido

Usando el método destroy()

El enfoque más común y recomendado utiliza el método destroy(). Este método está asociado con el objeto de la ventana principal (típicamente llamado root) y cierra limpiamente la ventana Tkinter, liberando los recursos asociados.


import tkinter as tk

root = tk.Tk()
root.title("Ejemplo de cierre de ventana")

def close_window():
    root.destroy()

button = tk.Button(root, text="Cerrar ventana", command=close_window)
button.pack(pady=20)

root.mainloop()

Este código define una función close_window() que llama a root.destroy(). Esta función se vincula luego al atributo command del botón. Al hacer clic en el botón, se ejecuta close_window(), lo que lleva al cierre de la ventana.

Llamando directamente a destroy()

Para aplicaciones más simples, puede asignar directamente root.destroy al atributo command del botón, eliminando la necesidad de una función separada:


import tkinter as tk

root = tk.Tk()
root.title("Ejemplo de cierre de ventana")

button = tk.Button(root, text="Cerrar ventana", command=root.destroy)
button.pack(pady=20)

root.mainloop()

Esto es más conciso pero podría reducir la legibilidad en proyectos más grandes.

Usando el método quit()

El método quit() difiere de destroy(). quit() solo detiene el bucle principal de eventos, mientras que destroy() destruye realmente la ventana y sus widgets. quit() es útil para escenarios más complejos donde necesita un control más preciso sobre el proceso de cierre, como la limpieza de recursos antes de que se destruya la ventana. Sin embargo, para el cierre simple de ventanas, destroy() es preferible. El uso incorrecto de quit() puede dejar procesos huérfanos.


import tkinter as tk

root = tk.Tk()
root.title("Ejemplo de cierre de ventana")

def close_window():
    root.quit()

button = tk.Button(root, text="Cerrar ventana", command=close_window)
button.pack(pady=20)

root.mainloop()

Esto demuestra root.quit(), pero root.destroy() sigue siendo la opción más segura y limpia para la mayoría de los casos.

Enfoque recomendado

Si bien existen varios métodos, root.destroy() ofrece la forma más sencilla y confiable de cerrar una ventana Tkinter con un botón en la mayoría de las aplicaciones. Su simplicidad y comportamiento claro lo convierten en la opción preferida a menos que su aplicación requiera el control más matizado que ofrece root.quit().

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *