目录
2.Entry的validatecommand 和 invalidcommand属性
Entry 的基本用法
Entry 的 show, width 属性
Label 组件的 row, column 属性
Button 组件的 sticky 属性
import tkinter
def pyEntry():
root = tkinter.Tk()
# 选项row代表行,column代表列
tkinter.Label(root, text='用户:').grid(row=0, column=0)
tkinter.Label(root, text='密码:').grid(row=1, column=0)
# 在用户,密码对应的行列,设置输入框.可以设置输入框的show属性来指定字符覆盖
e1 = tkinter.Entry(root)
e2 = tkinter.Entry(root,show='*')
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)
def show():
print("用户:《%s》" % e1.get())
print("密码:%s" % e2.get())
# 点击特定按钮,所触发的事件
# sticky参数的值和anceror的一样,用来设置按钮的方位
# 退出直接调用根窗口的quit方法
tkinter.Button(root, text='获取信息', width=10, command=show).grid(row=3, column=0, sticky=tkinter.W, padx=10, pady=5)
tkinter.Button(root, text='退出', width=10, command=root.quit).grid(row=3, column=1, sticky=tkinter.E, padx=10, pady=5)
tkinter.mainloop()
Entry 的验证功能
Entry 组件本身就自带了验证功能,就是可以验证输入框里面内容的合法性。
实现该功能,就要设置选项 validate, validatecommand 和 invalidcommand
1.Entry的validate属性
验证的” 开关” 是 validate 选项,该选项可以设置的值有:
2.Entry的validatecommand 和 invalidcommand属性
validatecommand 或 invalidcommand=(验证函数,参数);参数可选有:
import tkinter
def pyEntryAttribute():
master = tkinter.Tk()
#test这里是有参数的方法,参数是在validatecommand里出现的
#使用额外功能(参数)前需要冷却,其实就是调用 register() 方法将验证函数包装起来
def test(content, reason, name):
if content == '查询告警':
print('告警查询成功!')
print(content, reason, name)
return True
else:
print('指令输入错误')
print(content, reason, name)
e1.delete(0, tkinter.END)
return False
#invalidcommand 选项指定的函数只有在 validatecommand 的返回值为 False 的时候才会被调用
def test2():
print('invalidatecommand设置的test2出场了')
v = tkinter.StringVar()
testCMD = master.register(test)
#%v 该组件当前的validate选项的值
#%V 调用验证函数的原因该值是'focusin'、'focusout'、'key'或'focused'(textvariable选项指定的变量值被修改)中的一个
e1 = tkinter.Entry(master, textvariable=v, validate='focusout', \
validatecommand=(testCMD, '%P', '%v', '%W'),invalidcomman=test2)
e2 = tkinter.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
tkinter.mainloop()