【发布时间】:2021-12-04 18:47:00
【问题描述】:
我有一个函数,它创建一个新窗口并更新一些值以插入到新窗口中的一个条目小部件中,作为时间表测验的一部分。然后我需要创建一个在单击提交按钮时运行的新函数,并检查用户的答案是否正确。但是,这个新函数在运行时给了我一个 NameError,因为它无法识别新窗口中的小部件,只能检查原始窗口中的小部件。如何让它检查新窗口中的小部件? 原始窗口:
Label(window,text="TIMES TABLES").pack()
game_btn = Button(window, text="Play Game",command=playGameClicked)
game_btn.pack()
创建新窗口的函数:
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!")
【问题讨论】:
-
总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
-
也许您必须将小部件分配给
global变量 - 才能在其他功能中访问此小部件。 -
全局变量是必要的,但也有错误
answer_box.get(0.0,END),应该是answer = answer_box.get()
标签: python function tkinter window pack