本帖最后由 paypojie 于 2022-11-19 12:12 编辑
实现校验功能的输入框-Tkinter
思路来源 GIF图的网络地址
自己做的输入框界面
自己实现的代码
[Python] 纯文本查看 复制代码 import tkinter as tk
from tkinter import messagebox
win = tk.Tk()
win.geometry('250x200+300+200')
win.resizable(0,0)
# 下面一行代码注释掉 不知道怎么解释 反正加注释之后 其他电脑运行不会报错 我猜测是python在其它电脑执行这行代码时 因为找不到图标文件 所以会报错
# win.iconbitmap(r"C:\Users\33943\Downloads\favicon.ico")
win.title('C语言中文网')
# 新建文本标签
tk.Label(win,text='账号:').grid(row=0,column=0)
tk.Label(win,text='密码:').grid(row=1,column=0)
# 对输入框内的内容进行验证 (校验输入框中的文本)
# 自定义定义验证函数 验证函数的返回值只能为True或者False
# 要求用户输入的内容只能是C语言中文网
def check():
# 获取输入框的内容
if e1.get() == 'C语言中文网':
messagebox.showinfo('输入正确')
return True
else:
messagebox.showwarning('输入不正确')
# 清除输入框的内容 e1.delete(0,tk.END)的效果和e1.delete(0,'end')一样
e1.delete(0,'end')
# e1.delete(0,tk.END)
return False
# 不能用这种方式写 不明白为什么用这种方式写会报错 要创建好之后才能进行布局吗?
# e1 = tk.Entry(win,validate='focusout',validatecommand=check).grid(row=0,column=1)
# e2 = tk.Entry(win).grid(row=1,column=1)
# 上面的两行代码是错误的写法 下面的四行代码是正确的写法 不明白为什么
e1 = tk.Entry(win,validate='focusout',validatecommand=check)
e2 = tk.Entry(win)
e1.grid(row=0,column=1)
e2.grid(row=1,column=1)
# 为啥在创建具有校验功能的输入框时 在创建之后需要赋值给变量 然后在进行放置和布局 为啥就不能直接进行创建加布局
# 思考: 为啥需要通过变量间接进行放置在主窗口和布局 为啥不能一步到位? 创建输入框之后直接进行放置和布局
win.mainloop()
# 注意事项 在创建能够进行内容检查的Entry控件时(输入框)需要在创建好之后赋值给变量 然后对变量使用grid()方法
# 具备验证内容的输入框 需要validate参数(指定验证方式 参数值是字符串参数)以及validatecommand(用户自定义的验证函数)至于invalidcommand参数可有可无
|