stringvar()转string或者什么方法可以避免这样

li = tk.StringVar()
pre1 = tk.StringVar()
pre2 = tk.StringVar()
su = tk.StringVar()
he = tk.StringVar()

def all(self, li, pre1, pre2, su, he):
    for be in self.sj:
        if float(li) < float(be['li']):
            if float(pre1) < float(be['pre1']):
                if float(pre2) < float(be['pre2']):
                    if float(su) <= float(be['su']):
                        if float(be['he']) >= float(he):
                            duration = 1000  # millisecond
                            freq = 440  # Hz
                            return True, '您的身体健康'

结果
File "D:\py\pythonProject1\db.py", line 23, in all
if float(li) < be['li']:
TypeError: float() argument must be a string or a number, not 'StringVar'

a = tk.StringVar()
print(type(str(a)))
可以转为str再作处理

tk.StringVar()得到的不是string类型吧,看这函数调用方式就不对,你打印一下pre1, pre2, su, he,看看是什么值