当我将事件绑定到条目并阅读内容时,更改会以某种方式落后。我想“动态更新”另一个条目,一旦条目1改变,它就会显示各种条目内容的计算结果。但不知何故,这种变化并未立即得到认可,只有前述的变化。不知道问题是否清楚: 如果我进行了n次更改,则会识别最多n-1的更改。如果数字是1000并且我按退格两次,则entry_1.get()将产生100而不是10.希望你明白我的意思现在:)
代码段(简化):
self.entry_1.bind('<Key>',lambda d: self.update())
def update(self):
success=True
try:
float(self.entry_1.get())
float(self.entry_1.get())
except ValueError: success=False
if success:
self.entry_3.delete(0,"end")
x=(float(self.entry_1.get())*float(self.entry_2.get())
self.entry_3.insert("end", "%g" %x)
可能是什么原因?
答案 0 :(得分:5)
原因是由于处理事件的顺序。该顺序由窗口小部件的“绑定标记”(或绑定标记)定义。默认情况下,订单是widget,class,toplevel,“all”。例如,如果您在窗口小部件,类和包含窗口小部件的顶层窗口以及特殊情况“all”上有绑定,则绑定将按此顺序触发。
我在this answer问题How to bind self events in Tkinter Text widget after it will binded by Text widget?
中详细介绍了这个问题。