小白学tkinter(entry的验证函数)

来源:互联网 发布:密码破解软件 编辑:程序博客网 时间:2024/06/05 14:32
这篇博客接着讲entry的验证函数,不过主要是使用的Tkinter的隐藏功能,也就是关于验证函数的一些额外的选项。

如下图所示:
这里写图片描述
‘这些选项都是带引号的’
为了使用这些选项,我们可以这样修改我们的validatecommand选项:
validatecommand=(f,s1,s2,……)
其中,f是验证函数名,s1,s2等是额外的选项,这些选项会作为参数一次传给f函数,再次之前需要将register()方法将验证函数包装起来。

from tkinter import *  root = Tk()  v = StringVar()  def test(f,s1,s2):    if f == '小甲鱼':        print('正确')        print(f,s1,s2)        return True    else:        print('错误')        print(f,s1,s2)        return Falsetest_register = root.register(test) #root调用register方法才能用到下边的validatecommand选项中e1 = Entry(root,textvariable = v,validate = 'focusout',\           validatecommand = (test_register,'%P','%i','%s')) #这些额外的参数带引号啊 ,要注意e2 = Entry(root)e1.pack()e2.pack()mainloop()'''用验证函数模拟简单计算器'''from tkinter import *root = Tk()frame = Frame(root) #把整个布局放到框架中,更好调节frame.pack(padx = 10,pady = 10)v1 = StringVar()v2 = StringVar()v3 = StringVar()def test(content):    if content.isdigit():#isdigit()方法,这是str的一个函数,只允许输入数字       return True    else:        return FalsetestCmd = root.register(test)#通过register方法转换为validatecommand选项能接收的函数Entry(frame,textvariable = v1,width = 10,validate = 'key',\      validatecommand = (testCmd,'%P')).grid(row = 0,column = 0) #用%P获取最新输入的字符串,而不用v1.get()小甲鱼说了很多,没看明白,这就不写了,呵呵Label(frame,text = '+').grid(row = 0,column = 1)Entry(frame,textvariable = v2,width = 10,validate = 'key',\      validatecommand = (testCmd,'%P')).grid(row = 0,column = 2)Label(frame,text = '=').grid(row = 0,column = 3)Entry(frame,textvariable = v3,width = 10,state = 'readonly',validate = 'key',\      validatecommand = (testCmd,'%P')).grid(row = 0,column = 4)def calc():    result = int(v1.get()) + int(v2.get())    v3.set(result)Button(frame,text = '计算结果',command = calc).grid(row = 1,column = 2,pady =5)mainloop()
原创粉丝点击