我想知道如何禁止某些字符的实时输入?比如字母,这样当你点击符号对应的按键时,widget里面什么都没有显示,怎么实现呢?
from tkinter import *
root = Tk()
root.title('Python')
root.geometry('158x55')
root.resizable(width = False, height = False)
First_line = Frame(root, background='olivedrab')
Expression = Text(First_line, background = "silver", foreground = "black",
width = 17, height=3)
Expression.pack(side = LEFT, padx = 2, pady = 2)
First_line.pack(anchor = W)
root.mainloop()

可以绑定keypress事件,如果输入了一个字母,则从handler返回字符串“break”,那么该事件就不会被发送到下一个handler,包括标准的handler,负责在里面显示字母文本字段。
但这并不能防止从剪贴板粘贴带有字母的文本。
您可以禁用通过 Ctrl-V 粘贴的功能,为此您需要添加条件:
对于文本字段
Entry(不是Text),也可以应用验证:基于英文 stackoverflow 的示例:https : //stackoverflow.com/a/35554720/4752653 @user1683793
此选项可防止使用剪贴板中的字母粘贴文本,但
Text不适用于此选项,它会引发错误_tkinter.TclError: unknown option "-validate"