我的代码和子函数已执行,但它没有到达mainloop()。 如果我注释掉" update_Lux(labelLuxValue)"窗口出现了。 我无法弄清楚原因:(
from Tkinter import *
def update_Lux(label):
label.config(text = str(dev.calcLux()))
label.after(100, update_Lux(label))
def update_CT():
labelCTValue.config(text = str(dev.calcCT()))
labelCTValue.after(100, update_CT())
box = Tk()
box.title('TCS3490')
box.geometry('200x180')
labelLux = Label(master=box, text='Lux=')
labelLux.place(x=5, y=5, width=60, height=30)
labelCT = Label(master=box, text='CT=')
labelCT.place(x=5, y=30, width=60, height=30)
labelLuxValue = Label(master=box)
labelLuxValue.place(x=50, y=5, width=100, height=30)
labelCTValue = Label(master=box)
labelCTValue.place(x=50, y=30, width=100, height=30)
update_Lux(labelLuxValue)
box.mainloop()
答案 0 :(得分:2)
您的两种方法update_Lux
和update_CT
中都有无限循环。
这一行
label.after(100, update_Lux(label))
应该是
label.after(100, lambda: update_Lux(label))
或
label.after(100, update_Lux, label)
否则,您不是将update_Lux
函数传递给after
,而是传递update_Lux(label)
的结果 ...并且当调用该方法时,它再次传递尝试将结果传递给after等等。
答案 1 :(得分:1)
好的,效果很好。 我现在有另一个问题。 还有另一个名为“update_CT”的函数。结构是一样的。 两个顺序都不起作用。
包括两个“更新”功能,如:
def update_LuxCT():
labelLuxValue.config(text = str(dev.calcLux()))
labelCTValue.config(text = str(dev.calcCT()))
labelLuxValue.after(100, lambda:update_LuxCT())
虽然有效:)
但为什么他们不能分开工作?