2013-06-05 48 views
0

我使用tkinter作为GUI。我结合事件的条目,像这样:Python 3.3 tkinter的入口小部件更新密钥

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

它的工作原理,但问题是,当比打字输入之外的键被按下它只是更新。退格触发它,箭头触发它,而不是字母或数字。我在寻找这个功能。

其他信息,可能是重要的:

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

如何使它触发任何按键?

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

编辑2:它可能与更新延迟有关。

+0

这_ought_工作的基础上,给出的信息;特定于窗口小部件的绑定应在类级绑定之前触发。 Tkinter错误也许? –

+0

@DonalFellows我意识到了答案。 – PascalVKooten

回答

0

它可以通过改变

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

得到解决,以

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

啊!你想要编辑后的值。尝试查看延迟操作,直到应用程序“空闲”,或(更好地)开启每个密钥验证。 –

1

结合应该为每个按键的工作 - 如果不是的话,你正在做一些别的地方在你的代码,以防止它不起作用,或者你的测试存在缺陷。

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

例如:

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

那么当你改变这个变量时会发生什么,它会调用这个回调函数?当条目上使用.get()时,“r”上的跟踪会触发吗? – PascalVKooten

+0

@Dualinity:是的。 –

相关问题