如何在另一个函数中再次使用函数中的entry.get?
我想在question2()
中再次使用def question1()
中的answer1.get
。。。
所以我想要这个:
如果用户对第一个问题给出了正确的答案,那么他们可以看到第二个问题,否则他们应该对第一个给出正确的答案
这可能吗?
from tkinter import *
screen = Tk()
screen.geometry("1540x821")
screen.title("Exam")
screen.state("zoomed")
screen.resizable(0, 0)
def question1():
q1 = Label(screen, text="This is the Question 1 : ")
q1.pack()
a1 = StringVar()
answer1 = Entry(screen, textvariable=a1)
answer1.pack()
def check():
if "shopping" in answer1.get():
correct = Label(screen, text="correct answer")
correct.place(relx=0.5, rely=0.1)
else:
wrong = Label(screen, text="wrong answer")
wrong.place(relx=0.5, rely=0.1)
buttoncheck = Button(screen, text="Check", command=check)
buttoncheck.place(relx=0.5, rely=0.4)
def question2():
if "shopping" in answer.get():
q2 = Label(screen, text="This is the Question 2 : ")
q2.pack()
a2 = StringVar()
answer2 = Entry(screen, textvariable=a2)
answer2.pack()
else:
previous = Label(screen, text="go back to previous question")
previous.pack()
button1 = Button(screen, text="Start", command=question1)
button1.place(relx=0.5, rely=0.5)
button2 = Button(screen, text="Next", command=question2)
button2.place(relx=0.5, rely=0.6)
screen.mainloop()
不能在另一个函数中使用在一个函数内部声明的函数。只需将check()
移动到question1()
声明之外。
附带说明一下,您很少希望声明嵌套函数,因为您希望使函数保持合理的简短。
首先,将check()
函数移出question1()
。这与@Amongalen提到的原因相同。
然后你可以把这个代码放在check()
函数中:
if "shopping" in answer1.get():
correct = Label(screen, text="correct answer")
correct.place(relx=0.5, rely=0.1)
question2()
else:
wrong = Label(screen, text="wrong answer")
wrong.place(relx=0.5, rely=0.1)