What is the difference between root.destroy() and root.quit() in Tkinter(Python)?

When working with Tkinter applications, you'll often need to close windows. Python's Tkinter provides two main methods: destroy() and quit(). Understanding their differences is crucial for proper application management.

What is destroy()?

The destroy() method terminates the mainloop process and destroys all widgets inside the window. It completely removes the window from memory and is the recommended way to close Tkinter applications ?

What is quit()?

The quit() method stops the mainloop but keeps the window object in memory. This can leave the interpreter running in the background, which may cause issues in interactive environments like IDLE ?

Example Demonstrating Both Methods

Here's a complete example showing both methods in action ?

# Import the required libraries
from tkinter import *

# Create an instance of tkinter frame
win = Tk()

# Set the geometry of frame
win.geometry("650x450")
win.title("Quit vs Destroy Example")

# Define a function for quit method
def quit_win():
    win.quit()

# Define a function for destroy method  
def destroy_win():
    win.destroy()

# Button for Quit Method
Button(win, text="Quit", command=quit_win, font=('Helvetica bold', 20)).pack(pady=20)

# Button for Destroy Method
Button(win, text="Destroy", command=destroy_win, font=('Helvetica bold', 20)).pack(pady=20)

# Start the main event loop
win.mainloop()

Running this code will display a window with two buttons "Quit" and "Destroy" respectively.

Key Differences

Method Mainloop Window Object Memory Cleanup Recommended Use
destroy() Terminates Destroyed Complete Closing applications
quit() Stops Remains in memory Partial Temporary stops only

Best Practices

Use destroy() when you want to completely close your application. Use quit() only when you need to temporarily stop the mainloop and plan to restart it later ?

from tkinter import *

def close_application():
    # Recommended way to close
    root.destroy()

root = Tk()
root.protocol("WM_DELETE_WINDOW", close_application)  # Handle window close button
Button(root, text="Close App", command=close_application).pack()
root.mainloop()

Warning

Important: Using quit() may leave the application running in the background, especially in IDLE environments. Always prefer destroy() for proper application termination.

Conclusion

Use destroy() to properly close Tkinter applications with complete memory cleanup. Reserve quit() for scenarios where you need to temporarily halt the mainloop without destroying the window object.

Updated on: 2026-03-25T18:21:03+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements