Tkinter: Как закрыть окно Toplevel при открытии другого?
Я новичок в поиске функции, которая позволяет мне закрывать последнее окно верхнего уровня при открытии нового. Я попытался интегрировать функцию destroy() в кнопку "Далее", но она не сработала. Идея состоит в том, что одновременно открываются только главное окно и текущее окно верхнего уровня, и когда я нажимаю следующую кнопку и открывается новое окно верхнего уровня, последнее закрывается. Я создаю тест с несколькими вариантами ответов, по крайней мере, 10 вопросов. Конкретные вопросы и ответы не включены в код, чтобы сделать его более простым. Кто-нибудь знает функцию, которая может помочь мне достичь этого? Спасибо за вашу помощь и советы!
import tkinter as tk
window = tk.Tk()
window.title("Quiz")
window.geometry("500x150")
score = 0
def inst():
t = tk.Label(window, text="Instruction")
t.pack()
def start():
start_game()
greet = tk.Label(window, text="Welcome to the Quiz")
greet.pack()
startButton = tk.Button(window, command=start, text="Start")
startButton.pack()
instr = tk.Button(window, text="Instructions", command=inst)
instr.pack()
end = tk.Button(window, text="Exit", command=window.destroy)
end.pack()
def start_game():
top = tk.Toplevel()
def question_2():
start_question_2()
question_answer = tk.StringVar()
question_answer.set(0)
def check_answer():
if question_answer.get() == 'B':
print('you got it right')
for btn in btn_list:
if str(btn['text']) == 'B':
btn.config(bg='green')
else:
btn.config(bg='red')
lbl = tk.Label(top, text="Question")
lbl.grid(columnspan=4)
text_to_add_to_btns = ['A', 'B', 'C', 'D']
btn_list = []
Column = 0
for txt in text_to_add_to_btns:
btn = tk.Button(top, text=txt)
btn.grid(row=0, column=Column, sticky='nesw')
btn_list.append(btn)
Column += 1
confirm_btn = tk.Button(top, text='Confirm',
command=check_answer)
confirm_btn.grid(columnspan=4)
next_btn = tk.Button(top, text='next', command=
question_2)
next_btn.grid(column=5)
def start_question_2():
top2 = tk.Toplevel()
def question_3():
start_question_3()
question_answer = tk.StringVar()
question_answer.set(0)
def check_answer():
if question_answer.get() == 'A':
print('you got it right')
for btn in btn_list:
if str(btn['text']) == 'A':
btn.config(bg='green')
else:
btn.config(bg='red')
lbl = tk.Label(top2, text="Question2")
lbl.grid(columnspan=4)
column = 0
text_to_add_to_btns = ['A', 'B', 'C', 'D']
btn_list = []
Column = 0
for txt in text_to_add_to_btns:
btn = tk.Button(top2, text=txt)
btn.grid(row=0, column=Column, sticky='nesw')
btn_list.append(btn)
Column += 1
confirm_btn = tk.Button(top2, text='Confirm',
command=check_answer)
confirm_btn.grid(columnspan=4)
next_btn = tk.Button(top2, text='next',
command=question_3)
next_btn.grid(column=5)
window.mainloop()