为 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 ...
我有一个函数可以创建一个新 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 ...