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()

0 ответов

Другие вопросы по тегам