Skip to main content
 首页 » 编程设计

python之如何在 tkinter Entry 小部件中仅插入一些指定字符

2025年05月04日11duanxz

我有一个包含 n 个条目小部件的列表。用户应该只能键入以下字符:“V”、“F”、“”。如果用户键入这些字符之一,则焦点应从条目 #x 传递到条目 #x+1,否则焦点应停留在原处(在条目 #x 上)并且输入应被丢弃。

我无法丢弃错误的输入:如果用户按下的键不同于允许的键,Entry 字段将获得该键,但命令 .delete(0,END) 不起作用,因为小部件本身还没有记住按下的键。

我该怎么办?

请您参考如下方法:

import Tkinter as tk 
 
def keyPress(event): 
    if event.char in ('V', 'F', ' '): 
        print event.char 
    elif event.keysym not in ('Alt_r', 'Alt_L', 'F4'): 
        print event.keysym 
        return 'break' 
 
 
root = tk.Tk() 
entry = tk.Entry() 
entry.bind('<KeyPress>', keyPress) 
entry.pack() 
entry.focus() 
 
root.mainloop() 

您可以轻松地分解语句,使其根据键变为不同的形式。

event.keysym 部分在那里,因此您可以在该小部件中时按 ALT-F4 关闭应用程序。如果您只是 else: return 'break' 那么它也会捕获所有其他击键。

这也是一个区分大小写的捕获。如果你想要不区分大小写,只需将其更改为 event.char.upper()