如何在Tkinter中仅按下回车键时禁用<KeyRelease>事件
Tkinter 回车键与事件冲突解决方案
核心实现思路
不需要全局禁用指定按键的全部事件,仅在<KeyRelease>绑定的处理函数中增加按键过滤逻辑即可,完全不影响<Return>事件的正常触发。
修改后的可运行代码
import tkinter as tk root = tk.Tk() root.geometry("500x500+0+0") def function1(e): print('hi') def function2(e): # 过滤回车键的松开事件,直接跳过后续逻辑 if e.keysym == 'Return': return print('hello') root.bind("<Return>", function1) root.bind("<KeyRelease>", function2) root.mainloop()
实现说明
<Return>事件在回车键按下时触发,<KeyRelease>事件在任意按键松开时触发,上述代码仅过滤回车键的松开事件,其他按键的<KeyRelease>事件不受影响。- 若需要临时禁用所有
KeyRelease事件而非仅过滤回车键,可以新增全局状态变量作为开关,在需要禁用的场景修改开关状态,function2中判断开关状态决定是否执行逻辑即可。
内容的提问来源于stack exchange,提问作者neo_codex
相关产品推荐
相关产品推荐

