Python 3.3 tkinter的密钥更新条目小部件

时间:2013-06-05 08:03:23

标签: python tkinter tk python-3.3

我正在使用tkinter作为GUI。我将事件绑定到这样的条目:

EntryFilePath.bind("<Key>", updateAmountOfPeople)

它有效,但问题是只有在按下键入输入以外的键时它才会更新。退格触发它,箭头触发它,而不是字母或数字。我正在寻找这个功能。

其他可能很重要的信息:

PathFileName = StringVar()
EntryFilePath = Entry(topLeftMidFrame, textvariable = PathFileName, width=45)
EntryFilePath.pack(side=TOP, pady=32, padx=10)

如何让它在任何键上触发?

编辑:我发现只有在刚刚被选中时才会发生这种情况。它需要一个“其他”非[a-Z0-9]键,之后就可以了。这是有问题的,如果人们立即开始写作。

EDIT2:可能与更新延迟有关。

2 个答案:

答案 0 :(得分:1)

绑定应该适用于每个按键 - 如果不是,您在代码中的其他位置执行某些操作以防止其工作,或者您的测试存在缺陷。

如果希望在值更改时调用函数,则可能需要考虑在与条目窗口小部件关联的变量上设置跟踪。无论是通过键盘输入,使用鼠标粘贴等,都会在值发生变化时触发跟踪。当用户使用箭头键或返回键时,会调用您的回调,或者任何其他不影响价值的关键。

例如:

def var_callback(*args):
    print "the variable has changed:", PathFileName.get()
PathFileName.trace("w", var_callback)

答案 1 :(得分:0)

可以通过更改

来解决
EntryFilePath.bind("<Key>", updateAmountOfPeople)

EntryFilePath.bind("<KeyRelease>", updateAmountOfPeople)