我正在尝试制作一款用户需要回答数学问题以击败怪物的游戏。我还没有为此添加代码,但我当前的问题是,当我输入正确的数学问题答案时,它说它错了。虽然它们都是整数,但它仍然不对。
我刚编辑了代码,以便对其进行测试。
from tkinter import *
import tkinter as tk
import random
class Easy(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
def question(self):
self.listAnswer = []
self.listUserAnswer = []
intOne = random.randrange(1,10)
intTwo = random.randrange(1,10)
self.listAnswer.append(intOne + intTwo)
self.strQuestion = "{} + {}".format(intOne, intTwo)
这就是输入的答案不正确的地方。
def attack(self):
self.intUserAnswer = self.a_entry.get()
self.listUserAnswer.append(self.intUserAnswer)
if self.listUserAnswer[self.i] == self.listAnswer[self.i]:
print("yes")
self.i += 1
else:
print("no")
print(self.listUserAnswer[self.i])
print(self.listAnswer[self.i])
def func():
attack(self)
self.a_entry.delete(0,END)
def game(self):
self.i = 0
question(self)
q_label = Label(self, text=self.strQuestion)
q_label.place(relx=0.5, rely=0.70, anchor='center')
self.a_entry = Entry(self, width=5, font=("Helvetica", 20, "bold"))
self.a_entry.place(relx=0.5, rely=0.80, anchor='center')
attack_button = Button(self, bg="blue", text="ATTACK!", command=func)
attack_button.place(relx=0.5, rely=0.90, anchor='center')
game(self)
root = tk.Tk()
Easy(root).pack(side="top", fill="both", expand=True)
root.title("Battle Maths")
root.geometry("400x250")
root.resizable(0,0)
root.mainloop()
答案 0 :(得分:0)
这是一个常见问题,但其解决方案非常简单。问题出在你的attack()函数中。正是在这里:self.intUserAnswer = self.a_entry.get()
。此时,您错误地假设您从tkinter.Entry()
窗口小部件中获取了用户输入,该窗口小部件名为self.a_entry
。实际上,你在attack()
函数中获得的所有内容都是无。
您的代码不完整,理想情况下您应该提供MCVE以便我们为您提供精确的解决方案,但是如果没有它我相信您可以将回调方法与事件相关联(按钮按下,最有可能)谢谢您可以在self.a_entry
窗口小部件中检索用户键入的值,然后将其转发到attack()
功能。