【发布时间】:2017-02-25 11:57:10
【问题描述】:
我正在尝试制作简单的测验程序。我希望标签为 10 个问题范围内的每个问题更改其文本。因此,当您回答第一个问题时,一个标签应显示“问题 1”。但它立即显示“问题 10”,我无法进行测验。
字典里只有一个问题,但应该不是问题,应该重复那个问题10次。
这是我的一段代码(在课堂上):
self.label = tk.Label(self, text="This is page 1")
self.label.pack(side="top", fill="x", pady=10)
self.label1 = tk.Label(self, text='')
self.label1.pack()
self.label2 = tk.Label(self, text='')
self.label2.pack()
self.entry1 = tk.Entry(self)
self.entry1.pack()
self.label3 = tk.Label(self, text='')
self.label3.pack()
self.entry2 = tk.Entry(self)
self.entry2.pack()
my_dict = {
"Base-2 number system": "binary",
}
score = 0
for i in range(10):
question = (random.choice(list(my_dict.keys())))
answer = my_dict[question]
self.label1.config(text=("Question " + str(i + 1)))
self.label2.config(text=(question + "?"))
guess = self.entry1.get()
if guess.lower() == answer.lower():
score += 1
else:
score += 0
self.label3.config(text=("Your final score was " + str(score)))
【问题讨论】:
-
您需要等待用户将他们的答案输入到 Entry 小部件中。你的代码没有这样做。顺便说一句,如果您的代码是我们可以运行和修改的minimal reproducible example,那么帮助您会更容易。
-
可能使用
Button而不是Label,当用户单击按钮时,您会更改按钮中的文本。您可以使用Button( ... , command=function_name)将功能分配给按钮
标签: python loops for-loop tkinter range