将<key>绑定到Tkinter中的条目</key>

时间:2011-08-29 13:24:01

标签: python binding tkinter

当我将事件绑定到条目并阅读内容时,更改会以某种方式落后。我想“动态更新”另一个条目,一旦条目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)

可能是什么原因?

1 个答案:

答案 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?

中详细介绍了这个问题。