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),然后在将其类型转换为 floatint 时,具体取决于输入的数字类型。

因此,考虑到输入框中输入的数字和数字 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()