无法理解如何在 tkinter 中验证条目小部件

Can't understand how to validate entry widget in tkinter

我正在尝试以交互方式验证 tkinter 中的条目小部件,以仅允许用户输入字母表中的字符。 我已经阅读了一个非常受欢迎的主题 (Interactively validating Entry widget content in tkinter),并从中试图找出我的解决方案,但我似乎无法让它工作。 在那个线程的评论中是一个只允许数字的解决方案,我已经将它用于我的程序的一个区域并且它工作得很好!代码在这里:

from tkinter import *

root = Tk()

def testVal(inStr,i,acttyp):
    ind=int(i)
    if acttyp == '1': #insert
        if not inStr[ind].isdigit():
            return False
    return True

entry = Entry(root, validate="key")
entry['validatecommand'] = (entry.register(testVal),'%P','%i','%d')
entry.pack()

root.mainloop()

我想要这样的解决方案,唯一的变化是它接受字母而不是数字。任何帮助表示赞赏

这是您正在寻找的解决方案:

def testVal(inStr,i,acttyp):
    ind=int(i)
    if acttyp == '1': #insert
        if not inStr[ind].isalpha():
            return False
    return True

这里还有一些可能有用的东西:

  • .isdigit() 测试字符串是否为整数
  • .isalpha() 测试字符串是否只包含字母
  • .isalnum() 测试字符串是否只包含字母和数字
  • .isupper() 大写测试
  • .islower() 小写测试

对于其他数据类型,您可以使用 isinstance(),例如 isinstance("34.5", float) 将 return True

来源:https://docs.python.org/3/library/stdtypes.html