如何在tkinter Entry组件中支持Enter和del删除键的响应
Tkinter Entry输入校验支持删除、回车键的修改方案
你当前的校验逻辑拦截控制键的核心原因是:Tkinter的<KeyPress>事件中,退格(Backspace)、删除(Delete)、回车(Enter)这类非字符输入的控制键,event.char属性为空字符串,空字符串不满足你设置的「数字、逗号、点号」校验规则,所以直接被拦截,按键默认行为被return 'break'终止。
直接修改_validate方法,先放行允许的控制键再做字符校验即可,修改后代码如下:
def _validate(self, event): # 先放行允许的控制键:退格、删除、回车 allow_control_keys = ('BackSpace', 'Delete', 'Return') if event.keysym in allow_control_keys: # 如果需要回车键触发额外自定义逻辑可以在这里补充,无额外需求直接return即可走按键默认行为 return # 原有字符校验逻辑保留 item = event.char if item not in ('.', ',') and not item.isnumeric(): messagebox.showerror(title='Title', message='输入无效,仅允许输入数字类字符!') return 'break' else: if self.nac == 0: self.entry_values[1].set(self.entry_values[0].get()) print(item)
内容的提问来源于stack exchange,提问作者drSlump
相关产品推荐
相关产品推荐

