首页 > 其他分享 >Tkinter 组件详解之Entry

Tkinter 组件详解之Entry

时间:2023-09-16 12:44:28浏览次数:46  
标签:index Tkinter 10 -- 输入框 详解 master tk Entry

import tkinter as tk
 
master = tk.Tk()
 
tk.Label(master, text="作品:").grid(row=0)
tk.Label(master, text="作者:").grid(row=1)
 
e1 = tk.Entry(master)
e2 = tk.Entry(master)
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())
    e1.delete(0, "end")
    e2.delete(0, "end")
 
tk.Button(master, text="获取信息", width=10, command=show).grid(row=3, column=0, sticky="w", padx=10, pady=5)
tk.Button(master, text="退出", width=10, command=master.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)
 
master.mainloop()

 

https://blog.csdn.net/qq_41556318/article/details/85108328

 

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正确!")
        return True
    else:
        print("错误!")
        e1.delete(0, "end")
        return False
 
v = tk.StringVar()
 
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test)
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正确!")
        return True
    else:
        print("错误!")
        e1.delete(0, "end")
        return False
 
def test2():
    print("我被调用了......")
    return True
 
v = tk.StringVar()
 
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test, invalidcommand=test2)
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

import tkinter as tk
 
master = tk.Tk()
 
v = tk.StringVar()
 
def test(content, reason, name):
    if content == "CSDN":
        print("正确!")
        print(content, reason, name)
        return True
    else:
        print("错误!")
        print(content, reason, name)
        return False
 
testCMD = master.register(test)
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=(testCMD, '%P', '%v', '%W'))
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

方法

delete(first, last=None)

-- 删除参数 first 到 last 范围内(包含 first 和 last)的所有内容
-- 如果忽略 last 参数,表示删除 first 参数指定的选项
-- 使用 delete(0, END) 实现删除输入框的所有内容

get()

-- 获得当前输入框的内容

icursor(index)

-- 将光标移动到 index 参数指定的位置
-- 这同时也会设置 INSERT 的值

index(index)

-- 返回与 index 参数相应的选项的序号(例如 e.index(END))

insert(index, text)

-- 将 text 参数的内容插入到 index 参数指定的位置
-- 使用 insert(INSERT, text) 将 text 参数指定的字符串插入到光标的位置
-- 使用 insert(END, text) 将 text 参数指定的字符串插入到输入框的末尾

scan_dragto(x)

--  见下方 scan_mark(x)

scan_mark(x)

-- 使用这种方式来实现输入框内容的滚动
-- 需要将鼠标按下事件绑定到 scan_mark(x) 方法(x 是鼠标当前的水平位置),然后再将 <motion> 事件绑定到 scan_dragto(x) 方法(x 是鼠标当前的水平位置),就可以实现输入框在当前位置和 sacn_mack(x) 指定位置之间的水平滚动

select_adjust(index)
-- 与 selection_adjust(index) 相同,见下方解释

select_clear()
-- 与 selection_clear() 相同,见下方解释

select_from(index)
-- 与 selection_from(index) 相同,见下方解释

select_present()
-- 与 selection_present() 相同,见下方解释

select_range(start, end)
-- 与 selection_range(start, end) 相同,见下方解释

select_to(index)
-- 与 selection_to(index) 相同,见下方解释

selection_adjust(index)
-- 该方法是为了确保输入框中选中的范围包含 index 参数所指定的字符
-- 如果选中的范围已经包含了该字符,那么什么事情也不会发生
-- 如果选中的范围不包含该字符,那么会从光标的位置将选中的范围扩展至该字符

selection_clear()
-- 取消选中状态

selection_from(index)
-- 开始一个新的选中范围
-- 会设置 ANCHOR 的值

selection_present()
-- 返回输入框是否有处于选中状态的文本
-- 如果有则返回 True,否则返回 False

selection_range(start, end)
-- 设置选中范围
-- start 参数必须必 end 参数小
-- 使用 selection_range(0, END) 选中整个输入框的所有内容

selection_to(index)
-- 选中 ANCHOR 到 index 参数的间的所有内容

xview(index)
-- 该方法用于确保给定的 index 参数所指定的字符可见
-- 如有必要,会滚动输入框的内容

xview_moveto(fraction)
-- 根据 fraction 参数给定的比率调整输入框内容的可见范围
-- fraction 参数的范围是 0.0 ~ 1.0,0.0 表示输入框的开始位置,1.0 表示输入框的结束位置

xview_scroll(number, what)
-- 根据给定的参数水平滚动输入框的可见范围
-- number 参数指定滚动的数量,如果是负数则表示反向滚动
-- what 参数指定滚动的单位,可以是 UNITS 或 PAGES(UNITS 表示一个字符单元,PAGES 表示一页)
关于验证详解

由于查看了不少资料,很多在这里都没有解释清楚,所以这里单独列出来详细讲解下。

Entry 组件是支持验证输入内容的合法性的,比如要求输入数字,你输入了字母那就是非法。实现该功能,需要通过设置 validate、validatecommand 和 invalidcommand 选项。

 

首先启用验证的“开关”是 validate 选项,该选项可以设置的值有:
值    含义
'focus'    当 Entry 组件获得或失去焦点的时候验证
'focusin'    当 Entry 组件获得焦点的时候验证
'focusout'    当 Entry 组件失去焦点的时候验证
'key'    当输入框被编辑的时候验证
'all'    当出现上边任何一种情况的时候验证
'none'    1. 关闭验证功能
2. 默认设置该选项(即不启用验证)
3. 注意,是字符串的 'none',而非 None

其次是为 validatecommand 选项指定一个验证函数,该函数只能返回 True 或 False 表示验证的结果。一般情况下验证函数只需要知道输入框的内容即可,可以通过 Entry 组件的 get() 方法获得该字符串。

标签:index,Tkinter,10,--,输入框,详解,master,tk,Entry
From: https://www.cnblogs.com/QQ-77Ly/p/17706594.html

相关文章

  • 详解Spring Boot如何实现每日给女朋友微信推送早安问候语和天气预报浪漫教程
    每天早上可以给指定的微信用户推送消息,经过公众号可以使用第三方接口丰富推送的消息内容百度天气api:添加天气信息推送天行数据api:添加美句、彩虹屁等语句推送通过后台计算纪念日推送......效果图技术栈点springboot实现后台微信测试账号的申请微信模版推送的配置对接百度天气api对......
  • Linux操作系统详解
    引言Linux是一个开源的Unix-like操作系统。它是由芬兰计算机科学家LinusTorvalds于1991年首次发布。Linux以其稳定性,安全性和灵活性而受到欢迎,并被广泛用于服务器,超级计算机,嵌入式系统和许多其他平台。在某些领域,例如智能手机和平板电脑(主要是Android操作系统),Linux的衍生品也非常......
  • 【愚公系列】2023年09月 WPF控件专题 TabControl控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 【从零学习python 】07.Python运算符详解:赋值、比较和逻辑运算符
    赋值运算符基本赋值运算符运算符描述实例=赋值运算符把=号右边的结果赋给左边的变量,如num=1+2*3,结果num的值为7单个变量赋值:num=10num同时为多个变量赋值(使用等号连接):a=b=4ab多个变量赋值(使用逗号分隔):num1,f1,str1=100,3.14......
  • idea 配置详解 (三)
    (<fontcolor="gray">VersionControl</font>......
  • C++之单例模式(6千字长文详解)
    单例模式什么是单例模式单例模式是设计模式的一种设计模式:设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法。最开始部落之间打仗时都是人拼人的对砍。后来春秋战国时......
  • 视频监控/安防监控/视频云存储EasyCVR平台设备分配模块升级详解
    (1)安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台支持将部署在监控现场的前端设备进行统一集中接入,可兼容多协议、多类型设备,管理员可选择任意一路或多路视频实时观看,视频画面支持单画面、多画面显示,视频窗口数量有1、4、9、16个可选,还能支持视频轮巡播放。平台分发的视频......
  • pod详解
    目录一、pod详解二、pause容器三、Pod分类四、容器的分类五、镜像拉取策略六、harbor仓库使用yaml拉取镜像     一、pod详解1.Pod基础概念Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行......
  • MySQL篇:第四章_详解DML语言
    DML语言插入一、方式一语法:insertinto表名(字段名,...)values(值1,...);特点:1、字段类型和值类型一致或兼容,而且一一对应2、可以为空的字段,可以不用插入值,或用null填充3、不可以为空的字段,必须插入值4、字段个数和值的个数必须一致5、字段可以省略,但默认所有字段,并且......
  • OGAI详解:AIStation调度平台如何实现大模型高效长时间持续训练
    大模型是当前通用人工智能产业发展创新的核心技术,目前国内已发布的生成式AI模型超过了100个。面向以大模型为核心的生成式AI开发与应用场景,近日浪潮信息发布了大模型智算软件栈OGAI(OpenGenAIInfra)——“元脑生智”,为大模型业务提供了全栈全流程的智算软件栈,包括AI算力系统环境部......