Как закрыть окно в tkinter, не выходя из программы?

Я хотел бы, чтобы вторая кнопка «Ввод» позволяла пользователю выйти из этого окна. Что такое команда? Я считаю, что self.quit завершает работу, но команда, которую я использовал, не работает.

import tkinter as tk

class Enter_Name_Window(tk.Toplevel):
    '''A simple instruction window'''
    def __init__(self, parent):
        tk.Toplevel.__init__(self, parent)
        self.text = tk.Label(self, width=40, height=2, text= "Please enter your name and class." )
        self.text.pack(side="top", fill="both", expand=True)

        enter_name = Entry(self)
        enter_name.pack()
        enter_name.focus_set()


        def callback():
            self.display_name = tk.Label(self, width=40, height=2, text = "Now please enter your tutor group.")
            self.display_name.pack(side="top", fill="both", expand=True)
            tutor = Entry(self)
            tutor.pack()
            tutor.focus_set()
            Enter_0.config(state="disabled")

            Enter_0_2 = Button(self, text="Enter", width=10, command=Enter_Name_Window.quit)
            Enter_0_2.pack()

        Enter_0 = Button(self, text="Enter", width=10, command=callback)
        Enter_0.pack()

person user3056786    schedule 12.12.2013    source источник
comment
Форматирование вашего кода перепутано, что затрудняет чтение кода.   -  person Bryan Oakley    schedule 12.12.2013
comment
Что вы подразумеваете под выходом из этого окна? Вы спрашиваете, как уничтожить окно или просто спрятать его?   -  person Bryan Oakley    schedule 12.12.2013


Ответы (1)


С самого начала было много ошибок, и в первую очередь:

command=Enter_Name_Window.quit

должно быть

command=self.destroy

Воздержитесь от использования метода quit() как нестабильного и передайте экземпляр класса self вместо нового объекта класса

Везде здесь ваш обновленный код:

class Enter_Name_Window(tk.Toplevel):
    '''A simple instruction window'''
    def __init__(self, parent):
        tk.Toplevel.__init__(self, parent)
        self.parent = parent
        self.text = tk.Label(self.parent, width=40, height=2, text= "Please enter your name and class." )
        self.text.pack(side="top", fill="both", expand=True)

        enter_name = tk.Entry(self)
        enter_name.pack()
        enter_name.focus_set()


        def callback():
            self.display_name = tk.Label(self.parent, width=40, height=2, text = "Now please enter your tutor group.")
            self.display_name.pack(side="top", fill="both", expand=True)
            tutor = tk.Entry(self.parent)
            tutor.pack()
            tutor.focus_set()
            Enter_0.config(state="disabled")

            Enter_0_2 = tk.Button(self.parent, text="Enter", width=10, command=self.destroy)
            Enter_0_2.pack()

        Enter_0 = tk.Button(self.parent, text="Enter", width=10, command=callback)
        Enter_0.pack()
person K DawG    schedule 12.12.2013