到目前为止,我已经返回并修复了一段代码。 这是一个产生问题的数学游戏;问这个问题;检查它并添加到分数。 我仍然是一个初学者,有一个问题,我看到很多人都有问题。 虽然我仍然无法弄清楚
我有一个条目小部件,想要从中获取信息,但仍然会出现错误
某人有什么不对,在哪里放v = StringVar()以及为什么错(我想了解原因)
这是一款WIP游戏,请忽略其他错误。 将tkinter导入为tk 随机导入为r
score = 0
a = 0
b = 0
answer = 0
def question_gen():
global a
global b
global answer
a = r.randint(0,100)
b = r.randint(0,100)
answer = (a+b)
def question_checker():
global score
user_input = v.get
if user_input == answer:
score += 1
else:
score += 0
class Demo1:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master).pack()
self.label = tk.Label(self.frame, text = 'Welcome To My Wonderful Math Game\n\nHow To Play\n\nWhen you pick a difficulty a new window will pop up\nYou have to answer to the question\nBefore the timer runs out\n\nGood Luck!').pack()
self.button1 = tk.Button(self.frame, text = 'Easy', width = 25, command = self.new_window).pack()
self.button2 = tk.Button(self.frame, text = 'Hard', width = 25, command = self.new_window).pack()
def new_window(self):
self.newWindow = tk.Toplevel(self.master)
self.app = Demo2(self.newWindow)
class Demo2:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master).pack()
self.label = tk.Label(self.master, text = '{0} + {1} ='.format(a,b)).pack()
self.entry = tk.Entry(self.master, textvariable=v).pack()
self.quitButton = tk.Button(self.master, text = 'Quit', width = 25, command = self.close_windows).pack()
def close_windows(self):
self.master.destroy()
def main():
root = tk.Tk()
app = Demo1(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:1)
将
v = StringVar()
放在哪里?
您必须将v存储在可以到达的地方
可能的解决方案包括
顺便说一句,如果你没有使用StringVar的跟踪功能(对每个变量做出反应),你就可以摆脱StringVar
class Demo2:
def __init__(self, master):
#[...]
self.entry = tk.Entry(self.master)
self.entry.pack()
#[...]
def close_windows(self):
#access entry content through
self.entry.get()
还要注意在tkinter中创建一个几何图形错误地初始化窗口小部件变量。它始终包含None
,因为pack
(和grid
)始终返回无。