最近卡在我的代码的一部分上,这对我来说似乎没有多大意义。我正忙于一个带有多个屏幕的程序来监控水处理过程。在设置页面中,有单选按钮选项可以选择过滤器的数量 (1-4) 以及其他设置。对这些单选按钮Filter_Num = tk.IntVar()
进行分组,然后由 4 个单选按钮分配值。
Filt1=tk.Radiobutton(self, text = "1" ,variable=Filter_Num,value=1)
Filt1.place(x=700,y=141)
Filt2=tk.Radiobutton(self, text = "2" ,variable=Filter_Num,value=2)
Filt2.place(x=750,y=141)
Filt3=tk.Radiobutton(self, text = "3" ,variable=Filter_Num,value=3)
Filt3.place(x=700,y=160)
Filt4=tk.Radiobutton(self, text = "4" ,variable=Filter_Num,value=4)
Filt4.place(x=750,y=160)
现在在显示控制选项的另一个页面上使用它,我有一个显示输出状态的功能,它每 500 毫秒更新一次,黑色被禁用,但是当使用比较运算符时
if Filter_Num < 4:
self.Filter4Can.itemconfigure(self.Filter_4i, fill="black")
elif (Filter_4_Solenoid == 1) and (Filter_Num >= 4):
self.Filter4Can.itemconfigure(self.Filter_4i, fill="green")
else:
self.Filter4Can.itemconfigure(self.Filter_4i, fill="red")
程序运行错误“ TypeError:'IntVar'和'int'的实例之间不支持'<' ”
可以理解,所以我需要使用 .get() 或 .getvar() 来检索变量内部的值self.Filter_Number = Filter_Num.get()
,但是如果这样做,我会收到错误“ AttributeError:'int' object has no attribute 'get' ”
如果我理解正确,它要么告诉我它是 IntVar 并且无法比较,要么告诉我它是 Integer 并且无法从中获取值。我错过了什么吗?我对这门语言相当陌生。
更奇怪的是在 if 中使用 IntVar 时
if Filter_4_Solenoid == 1:
x = Filter_Num
x = x.get()
print(x)
值转换没有问题,我可以得到 1 - 4,但在如果之外,问题仍然存在