从 `Tkinter.Entry` 获取值并将其内容与另一个值进行比较
Get value from `Tkinter.Entry` and compare its content with another value
我用 __init__
函数构造了一个 Tkinter
window。在 window 里面有一个乘法 5 * 10 和一个 Entry
框。如果用户用正确的答案填入方框,然后按下按钮,result
函数就会被执行,标签应该显示 "right" 消息。否则标签会显示 "wrong" 消息。
问题是:即使答案正确,标签也会显示 "wrong" 消息。如果我在 result
函数中打印 self.content
,它会在终端中显示正确的值。但问题出在 result
函数的 if
语句中。
from Tkinter import *
class prop:
def __init__(self):
self.root = Tk()
self.root.geometry("800x600")
self.x = 5
self.y = 10
self.title = Label(self.root, text = "TEST")
self.title.grid(row=0, column=0, columnspan=6)
self.title.config(font=("Courier", 30))
self.labelx = Label(self.root,text=self.x)
self.labelx.grid(row=2, column=2)
self.labelx.config(font=("Courier", 30))
self.epi = Label(self.root,text="X")
self.epi.grid(row=2, column=3)
self.epi.config(font=("Courier", 30))
self.labely = Label(self.root,text=self.y)
self.labely.grid(row=2, column=4)
self.labely.config(font=("Courier", 30))
self.total = Entry(self.root, font = "Courier 25 bold",justify="center",width=3)
self.total.grid(row=2, column=5, padx=20)
button = Button(self.root, text="OK", command = self.result)
button.grid(row=3, column=2)
self.content = Entry.get(self.total)
self.root.mainloop()
def result(self):
if self.content == (self.x * self.y):
self.labres = Label(self.root, text="Right")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
else:
self.labres = Label(self.root, text="Wrong")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
start = prop()
在输入值之前,您正在阅读 Entry 的内容。单击按钮后,您应该阅读内容。
您还在 self.content == (self.x * self.y)
中将字符串与 int 进行比较。你应该使用 int(self.content) == (self.x * self.y)
.
更新后的结果函数为:
def result(self):
self.content = Entry.get(self.total)
if int(self.content) == (self.x * self.y):
self.labres = Label(self.root, text="Right")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
else:
self.labres = Label(self.root, text="Wrong")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
我用 __init__
函数构造了一个 Tkinter
window。在 window 里面有一个乘法 5 * 10 和一个 Entry
框。如果用户用正确的答案填入方框,然后按下按钮,result
函数就会被执行,标签应该显示 "right" 消息。否则标签会显示 "wrong" 消息。
问题是:即使答案正确,标签也会显示 "wrong" 消息。如果我在 result
函数中打印 self.content
,它会在终端中显示正确的值。但问题出在 result
函数的 if
语句中。
from Tkinter import *
class prop:
def __init__(self):
self.root = Tk()
self.root.geometry("800x600")
self.x = 5
self.y = 10
self.title = Label(self.root, text = "TEST")
self.title.grid(row=0, column=0, columnspan=6)
self.title.config(font=("Courier", 30))
self.labelx = Label(self.root,text=self.x)
self.labelx.grid(row=2, column=2)
self.labelx.config(font=("Courier", 30))
self.epi = Label(self.root,text="X")
self.epi.grid(row=2, column=3)
self.epi.config(font=("Courier", 30))
self.labely = Label(self.root,text=self.y)
self.labely.grid(row=2, column=4)
self.labely.config(font=("Courier", 30))
self.total = Entry(self.root, font = "Courier 25 bold",justify="center",width=3)
self.total.grid(row=2, column=5, padx=20)
button = Button(self.root, text="OK", command = self.result)
button.grid(row=3, column=2)
self.content = Entry.get(self.total)
self.root.mainloop()
def result(self):
if self.content == (self.x * self.y):
self.labres = Label(self.root, text="Right")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
else:
self.labres = Label(self.root, text="Wrong")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
start = prop()
在输入值之前,您正在阅读 Entry 的内容。单击按钮后,您应该阅读内容。
您还在 self.content == (self.x * self.y)
中将字符串与 int 进行比较。你应该使用 int(self.content) == (self.x * self.y)
.
更新后的结果函数为:
def result(self):
self.content = Entry.get(self.total)
if int(self.content) == (self.x * self.y):
self.labres = Label(self.root, text="Right")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))
else:
self.labres = Label(self.root, text="Wrong")
self.labres.grid(row=2, column=6)
self.labres.config(font=("Courier", 30))