I get TypeError: '>' not supported between instances of 'float'
I get TypeError: '>' not supported between instances of 'float'
如果 > 到我在文本框中插入的数字,我想得到一个数字 (B = 2 + 2) 的“Ok”打印。
第一个数字是
A = 2 + 2
A = Entry (root, width = 4, highlightthickness = 0, bg = "# ffffc0")
A.place (x = 1, y = 1)
if B > A:
print ("Ok")
我得到TypeError: '>' not supported between instances of 'float'
我该如何解决?
调用 Entry()
returns 一个对象,它是一个文本小部件,存储在 number2
中。要获取其内容,您需要调用其 get()
方法。结果将是 str
.
类型
您需要调用 int(number2.get())
或 float(number2.get())
来获取类型与问题中显示的变量 number1
兼容的变量。
您不能将 Entry
小部件与 float
变量进行比较。
Refer to the documentation,了解更多。
因此将 Entry 小部件的数据 (textvariable
) 存储在一个 StringVar
变量中(对于 double
值,您也可以在 Tkinter 中使用 DoubleVar
),然后在将其类型转换为 float
或 int
时,具体取决于输入的数字类型。
因此,考虑到输入框中输入的数字和数字 1 都是 整数值(也可以是大整数,用 逗号.) 我会将数字存储为 strings。 (如果值是小数,请使用 float
而不是 int
。)
为了 比较 存储在字符串中的数字,我将创建一个函数 valueOf
来获取这些字符串的值作为 int 并删除逗号。
这段代码会给你一个想法:
from tkinter import *
window = Tk()
number2 = StringVar() #take the input number2 as a string (so that commas are also included)
entry_1 = Entry(window,textvariable=number2) #assign number2 as textvariable of this Entry box.
entry_1.place(x = 1, y = 1)
def valueOf(s):
if type(s) == str :
s = s.replace(',', '') #removes the commas from the number
if s=="" : #in case nothing was given in Entry box, consider it as 0
return 0
return int(s) #return the integer form of that number
def Compare():
#number1 = "2,552,555" #make sure to take this number as a string if commas are there
number1= 2+2 #this is already in int form
if valueOf(number1) > valueOf(number2.get()):
print ("Ok")
else:
print("Input is Equal or Greater")
button1 = Button(window, text="Print", command=Compare)
button1.place(x = 45, y = 30)
window.mainloop()
如果 > 到我在文本框中插入的数字,我想得到一个数字 (B = 2 + 2) 的“Ok”打印。
第一个数字是
A = 2 + 2
A = Entry (root, width = 4, highlightthickness = 0, bg = "# ffffc0")
A.place (x = 1, y = 1)
if B > A:
print ("Ok")
我得到TypeError: '>' not supported between instances of 'float'
我该如何解决?
调用 Entry()
returns 一个对象,它是一个文本小部件,存储在 number2
中。要获取其内容,您需要调用其 get()
方法。结果将是 str
.
您需要调用 int(number2.get())
或 float(number2.get())
来获取类型与问题中显示的变量 number1
兼容的变量。
您不能将 Entry
小部件与 float
变量进行比较。
Refer to the documentation,了解更多。
因此将 Entry 小部件的数据 (textvariable
) 存储在一个 StringVar
变量中(对于 double
值,您也可以在 Tkinter 中使用 DoubleVar
),然后在将其类型转换为 float
或 int
时,具体取决于输入的数字类型。
因此,考虑到输入框中输入的数字和数字 1 都是 整数值(也可以是大整数,用 逗号.) 我会将数字存储为 strings。 (如果值是小数,请使用 float
而不是 int
。)
为了 比较 存储在字符串中的数字,我将创建一个函数 valueOf
来获取这些字符串的值作为 int 并删除逗号。
这段代码会给你一个想法:
from tkinter import *
window = Tk()
number2 = StringVar() #take the input number2 as a string (so that commas are also included)
entry_1 = Entry(window,textvariable=number2) #assign number2 as textvariable of this Entry box.
entry_1.place(x = 1, y = 1)
def valueOf(s):
if type(s) == str :
s = s.replace(',', '') #removes the commas from the number
if s=="" : #in case nothing was given in Entry box, consider it as 0
return 0
return int(s) #return the integer form of that number
def Compare():
#number1 = "2,552,555" #make sure to take this number as a string if commas are there
number1= 2+2 #this is already in int form
if valueOf(number1) > valueOf(number2.get()):
print ("Ok")
else:
print("Input is Equal or Greater")
button1 = Button(window, text="Print", command=Compare)
button1.place(x = 45, y = 30)
window.mainloop()