在我的Tkinter程序中,我需要在一个Entry Widget中捕获所有的按钮按下。这是Entry Widget的总体思想(在最终实现中,打印将被更有用的功能所取代):
class QuickSearchBox(tk.Entry):
def __init__(self, parent):
super().__init__(parent)
self.var = tk.StringVar()
self.config(textvariable=self.var)
self.bind('<KeyPress>', lambda e: print(self.var.get()))
现在我注意到,当快速打字时,
<KeyPress>
捕获所有按键(除了最后一次),而
<KeyRelease>
没有。(我正在Windows 10机器上运行PyCharm中的脚本)。
例如,扣钮
skjdfhkdjfh
具有
<按键>
打印:
s
sk
skj
skjd
skjdf
skjdfh
skjdfhk
skjdfhkd
skjdfhkdj
skjdfhkdjf
扣扣子时
sjkdfsdkjf
具有
<按键释放>
打印:
sjkd
sjkdf
sjkdf
sjkdf
sjkdfsdk
sjkdfsdkjf
sjkdfsdkjf
sjkdfsdkjf
sjkdfsdkjf
sjkdfsdkjf
我有两个问题:
-
如何解释上述行为的差异?
-
有可能达到
<按键>
当涉及到捕获所有按键时
而且
捕捉最后一次按键(似乎只有在
<按键释放>
)?