¿Cómo cerrar una ventana de Tkinter con un botón?

Requisitos previos: Tkinter

El módulo Tkinter de Python ofrece la función Button para crear un botón en una ventana Tkinter para ejecutar cualquier tarea una vez que se hace clic en el botón. La tarea se puede asignar en el parámetro de comando de la función Button() . A continuación se presentan varios métodos mediante los cuales se puede lograr esto.

Método 1: Usar el método destroy() Non-Class

Acercarse:

  • Importar módulo tkinter.
  • Cree una ventana principal llamada root.
  • Agrega un botón.
  • Asigne root.destroy al atributo de comando de ese botón.

Ejemplo: uso de destroy() directamente en el atributo de comando

Python3

# Python program to create a close button
# using destroy Non-Class method
from tkinter import *
  
# Creating the tkinter window
root = Tk()
root.geometry("200x100")
  
# Button for closing
exit_button = Button(root, text="Exit", command=root.destroy)
exit_button.pack(pady=20)
  
root.mainloop()

Ejemplo: Usar destroy() en una función

Python3

# Python program to create a close button
# using destroy Non-Class method
from tkinter import *
  
# Creating the tkinter window
root = Tk()
root.geometry("200x100")
  
# Function for closing window
  
  
def Close():
    root.destroy()
  
  
# Button for closing
exit_button = Button(root, text="Exit", command=Close)
exit_button.pack(pady=20)
  
root.mainloop()

Producción:

Método 2: Usando el método de clase destroy()

Acercarse:

  • Importar módulo tkinter.
  • Cree una clase de ventana tkinter.
  • Cree una ventana principal llamada root.
  • Agrega un botón.
  • Asigne root.destroy al atributo de comando de ese botón.

Ejemplo: uso de destroy() directamente en el atributo de comando

Python3

# Python program to create a close button
# using destroy Class method
from tkinter import *
  
# Class for tkinter window
  
  
class Window():
    def __init__(self):
  
        # Creating the tkinter Window
        self.root = Tk()
        self.root.geometry("200x100")
  
        # Button for closing
        exit_button = Button(self.root, text="Exit", command=self.root.destroy)
        exit_button.pack(pady=20)
  
        self.root.mainloop()
  
  
# Running test window
test = Window()

Ejemplo: Usar destroy() en una función

Python3

# Python program to create a close button
# using destroy Class method
from tkinter import *
  
# Class for tkinter window
  
  
class Window():
    def __init__(self):
  
        # Creating the tkinter Window
        self.root = Tk()
        self.root.geometry("200x100")
  
        # Button for closing
        exit_button = Button(self.root, text="Exit", command=self.Close)
        exit_button.pack(pady=20)
  
        self.root.mainloop()
  
    # Function for closing window
    def Close(self):
        self.root.destroy()
  
  
# Running test window
test = Window()

Producción:

Método 3: Usando el método quit()

Este método no funciona correctamente si está llamando a su aplicación Tkinter desde IDLE, ya que quit() terminará todo el intérprete TCL y hará que el bucle principal se cierre dejando todos los widgets intactos. Por lo tanto, es mejor usar quit() si está usando cualquier otro editor/intérprete que no sea IDLE. O bien, puede usar la función exit() después de mainloop para salir del programa Python.

No se recomienda usar quit() si su aplicación Tkinter se ejecuta desde IDLE , ya que cerrará el intérprete y dejará el programa ejecutándose con todos sus widgets. Tampoco se recomienda principalmente porque puede fallar en algunos intérpretes. 

Acercarse:

  • Importar módulo tkinter.
  • Cree una ventana principal llamada root.
  • Agrega un botón.
  • Asigne root.quit al atributo de comando de ese botón.
  • Agregue la función exit() después de llamar al mainloop

Ejemplo:

Python3

# Python program to create a close button
# using quit method
from tkinter import *
  
# Creating the tkinter window
root = Tk()
root.geometry("200x100")
  
# Button for closing
exit_button = Button(root, text="Exit", command=root.quit)
exit_button.pack(pady=20)
  
root.mainloop()
exit(0)

Producción:

Salida en el editor normal (código VS)

Salida en reposo

Salida en Jupyter Notebook

Publicación traducida automáticamente

Artículo escrito por debrc y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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