将tkinter Entry与实际的加法答案进行比较

时间:2018-01-19 20:59:21

标签: python tkinter tkinter-entry

我正在尝试将Entry框的输入与实际答案进行比较。这是我的第一个python项目之一,我仍然非常困惑,说实话,我甚至不知道如何开始提问。

用户将单击加法或减法按钮。将出现一个字符串,询问“4 + 5相等于什么?”这些数字是随机生成的。

然后我使用tkinter库插入一个Entry框。 我不知道如何get()输入并将其与实际数字的总和或差异进行比较。

我试图遵循这个video,但我也没有使用其他方法。仅供参考,我主要关注添加方法,如果你进行测试,首先要加法。

from tkinter import Entry
import tkinter as tk
import random as rand

root = tk.Tk()
root.geometry("450x450+500+300")
root.title("Let's play Math!")

welcomeLabel = tk.Label(text="LET'S PLAY MATH!").pack()
startLabel = tk.Label(text='Select a math operation to start').pack()

def addition():
    a = rand.randrange(1,10,1)
    b = rand.randrange(1,10,1)
    global Answer
    Answer = a + b

    tk.Label(text="What does " + str(a) + " + " + str(b) + " equal? ").place(x=0, y=125)
    global myAnswer
    myAnswer = Entry().place(x=300, y= 125)

def checkAnswer():
    entry = myAnswer.get()

    while int(entry) != Answer:
        if int(entry) != Answer:
            tk.Label(text="Let's try again.").pack()
        elif int(entry) == Answer:
            tk.Label(text="Hooray!").pack()


addBtn = tk.Button(text="Addition", command=addition).place(x=100, y = 60)
subBtn = tk.Button(text="Subtraction", command=subtraction).place(x=200, y=60)
checkBtn = tk.Button(text="Check Answer", command=checkAnswer).place(x=300, y = 150)

tk.mainloop()

3 个答案:

答案 0 :(得分:2)

解决问题所需要做的就是将Entry()对象的创建与放置它分开:

def addition():
    a = rand.randrange(1,10,1)
    b = rand.randrange(1,10,1)
    global Answer
    Answer = int(a + b)

    tk.Label(text="What does " + str(a) + " + " + str(b) + " equal? ").place(x=0, y=125)
    global myAnswer
    myAnswer = Entry()
    myAnswer.place(x=300, y= 125)

Entry()返回条目对象,该对象具有get()方法。但是,当您链接.place()时,会返回其结果,即None。因此,您永远不会将Entry对象实际存储在变量中。

此外,最好确保Answer也是int

答案 1 :(得分:0)

获取答案的值answer = myanswer.get()或任何其他变量名称。要将它与正确的答案进行比较

if int(answer) == correctAnswer:
   #the code

是你问的那个?

答案 2 :(得分:0)

考虑this,以下是一个示例,用于响应用户点击{{1}时输入answer的号码是"Correct!"还是"False!" }:

answer_btn