飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3327|回复: 2

编写具有验证功能的输入框界面和自我思考

[复制链接]
  • TA的每日心情
    开心
    2024-5-27 23:24
  • 签到天数: 300 天

    [LV.8]以坛为家I

    发表于 2022-11-19 18:15:07 | 显示全部楼层 |阅读模式
    本帖最后由 paypojie 于 2022-11-19 18:24 编辑

                                                                    实现校验功能的输入框-Tkinter




    思路来源  GIF图的网络地址 http://c.biancheng.net/uploads/allimg/220105/110G56144-3.gif




    自己做的输入框界面

    屏幕截图_20221118_233924.png

    屏幕截图_20221118_234122.png


    自己实现的代码
    [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参数可有可无

    编写具有验证功能的输入框界面和自我思考
    https://www.52pojie.cn/thread-1715271-1-1.html
    (出处: 吾爱破解论坛)










    PYG19周年生日快乐!
  • TA的每日心情
    难过
    5 天前
  • 签到天数: 661 天

    [LV.9]以坛为家II

    发表于 2022-11-21 09:20:53 | 显示全部楼层
    这个不错啊,多谢
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-27 23:24
  • 签到天数: 300 天

    [LV.8]以坛为家I

     楼主| 发表于 2022-11-21 12:34:14 | 显示全部楼层
    乐活 发表于 2022-11-21 09:20
    这个不错啊,多谢

    我觉得我这个写的不是很好
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表