如何验证 Tkinter 条目小部件只接受字符串?

How to validate a Tkinter entry widget to only accept string?

我正在尝试通过 Tkinter 工作,这是我的代码的一部分:

 FirstName = Label(canvas, text="First Name")
 FirstName.configure(width=30, bg="white", fg="black", border=10)
 FirstName = canvas.create_window(330, 130, anchor = CENTER, window=FirstName)

 FName_Entry = Entry(canvas)
 canvas.create_window(850, 145, window=FName_Entry, height=35, width=300)

如您所见,这是一个输入小部件,供用户输入他们的名字。 我如何验证它只接受字符串(字母),如果他们尝试输入整数、符号或基本上不是字母的任何东西,它应该在小部件的一侧显示一条消息,敦促用户输入有效名称。

我尝试在线查看,但大多数人都在使用 类,我还不习惯 类,我是 Tkinter 的新手。其他示例解释了如何将条目限制为整数,所以我在这里有点困惑。 感谢您的帮助!

您可以使用列表来存储要接受的信件。 然后用列表中的元素检查输入的每个字母。 如果在列表中的输入中找不到任何字符(可接受的字符),则它是无效输入。

# acceptable character list
accepted_characters = ['a', 'b', 'c',.....'z', 'A', 'B', 'C',...'Z']

# input from the tkinter entry widget
inp = "hello"

for i in inp:
    if i not in accepted_characters:
        print('Invalid data.')

另一种方法是使用 RegEx 模块,即 built-in 模块。但是我对RegEx不太熟悉

下面是一个小片段,可以让您更好地理解

from tkinter import * 
from tkinter import messagebox

root = Tk()

def check():
    sel = e.get()
    
    if not sel.isalpha():
        messagebox.showerror('Only letters','Only letters are allowed!')

e = Entry(root)
e.pack(pady=10)

b = Button(root,text='Click Me',command=check)
b.pack(padx=10,pady=10)

root.mainloop()

这里我们正在检查是否 sel.isalpha() returns False ,如果是,则显示 messagebox 表示只允许使用字母。就这么简单。

如果有任何错误请告诉我。快乐编码

Here更多关于isalpha()方法

干杯