nuria_mc
nuria_mc

Reputation: 45

Close button tkinter after pressing button?

I created a button that works perfectly (not entire code here) but I want that once you press the 'Save' button, the window disappear. Someone knows how to do it?

root2 = tk.Tk()
root2.geometry('200x100') 
save_button = tk.Button(root2)
save_button.configure(text='Save', command=lambda: ask_parameter(ents1))
save_button.pack()
root2.mainloop()

Upvotes: 0

Views: 324

Answers (4)

user5401398
user5401398

Reputation: 114

I would suggest using destroy() method as used here https://docs.python.org/3.8/library/tkinter.html#a-simple-hello-world-program.

One of the easy ways to invoke the destroy method in your code is this;

def ask_parameter_and_destroy(ents1):
    ask_parameter(ents1)
    root2.destroy()

root2 = tk.Tk()
root2.geometry('200x100') 
save_button = tk.Button(root2)
save_button.configure(text='Save', command=lambda: ask_parameter_and_destroy(ents1))
save_button.pack()
root2.mainloop()

You can read about differences between destroy() and previously proposed quit() methods on the following page: What is the difference between root.destroy() and root.quit()?.

Upvotes: 1

Epamaarainen Roina
Epamaarainen Roina

Reputation: 1

If your goal is to create a dialog for saving a file, you might be interested in tkinter.filedialog library, which has ready made dialog boxes for handling file saving.

Upvotes: 0

martineau
martineau

Reputation: 123531

Based on the extremely limited snippet of code in your question: I would suggest it doing by defining a function to call that does something like this:

import tkinter as tk

def ask_and_close(root, ents):
    ask_parameter(ents)
    root.destroy()

ents1 = "something"
root2 = tk.Tk()
root2.geometry('200x100')
save_button = tk.Button(root2)
save_button.configure(text='Save', command=lambda: ask_and_close(root2, ents1))
save_button.pack()
root2.mainloop()

Note: If you're creating multiple windows, I wouild suggest using tk.Toplevel() instead of calling tk.TK() more than once.

Upvotes: 2

TornaxO7
TornaxO7

Reputation: 1309

Just use the master.quit() method! Example Code:

from tkinter import *

class Test:

    def __init__(self):
        self.master = Tk()
        self.button = Button(self.master, text="Push me!", command=self.closeScreen)
        self.button.pack()

    def closeScreen(self):
        # In your case, you need "root2.quit"
        self.master.quit()

test = Test()
mainloop()

Upvotes: 1

Related Questions