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

时间:2016-11-22 12:28:42

标签: python validation tkinter tkinter-entry

我正在尝试以交互方式验证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()

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

1 个答案:

答案 0 :(得分:1)

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

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)将返回True

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