为 Python 中的新 Windows 创建函数

Create Functions for New Windows in Python

我有一个函数可以创建一个新 window 并更新一些值以插入到新 window 中的一个条目小部件中,作为时间 table 测验的一部分.然后我需要创建一个新函数,该函数在单击提交按钮时运行并检查用户的答案是否正确。但是,这个新函数在运行时给我一个 NameError,因为它无法识别新 window 中的小部件,只能检查原始 window 中的小部件。如何获取它来检查新 window 中的小部件? 原文window:

Label(window,text="TIMES TABLES").pack()
game_btn = Button(window, text="Play Game",command=playGameClicked)
game_btn.pack()

创建新函数 window:

def playGameClicked():
    #create new window
    newWindow = Toplevel(window)
    newWindow.geometry("500x300+0+0")
    Label(newWindow, text = "Times Tables Game").pack()    
    Label(newWindow,text="Question:",font=("Helvetica",10),width=10,).pack()
    question_box = Entry(newWindow,width=30,background="light blue")
    question_box.pack()
    Label(newWindow,text="Your Answer:",font=("Helvetica",10),width=10).pack()
    answer_box = Entry(newWindow,width=50,background="light green")
    answer_box.pack()
    submit_btn = Button(newWindow,text="Submit",width=10,command=submitClicked)
    submit_btn.pack()
    Label(newWindow,text="You are...",font=("Helvetica",10),width=10).pack()
    correction_box = Text(newWindow,width=15,height=1,background="light blue")
    correction_box.pack()

    #new question (all_tables_dict is a long dictionary of 1-12xtables e.g"1*2":2)
    question_box.delete(0,END)
    keys = list(all_tables_dict.keys())
    new_question = random.choice(keys)
    question_box.insert(END, new_question)

点击提交按钮时:(此功能不起作用)

def submitClicked():
    answer_box.get(0.0,END)
    try:
        answer = all_tables_dict[question]
        correct=True
    except:
        correct=False
    if correct==True:
        correction_box.insert("CORRECT!")
    else:
        correction_box.insert("INCORRECT!")

你没有显示完整的错误消息,我不能运行所以我会猜测

在函数内部创建的所有变量都是local并且不能在其他函数中访问。您必须通知函数它必须将小部件分配给全局变量。

def playGameClicked():
    global answer_box
    global correction_box

    # ... code ...

    answer_box = ...

    # ... code ...

    correction_box = ...

    # ... code ...