如何在另一个函数的函数中使用Entry小部件



如何在另一个函数中再次使用函数中的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)

相关内容

  • 没有找到相关文章

最新更新