做们作业网站,谷歌浏览器 安卓下载2023版官网,个人适合网站类型,widgetkit wordpressThe Tkinter Entry Widget##简介Entry(输入框)组件通常用于获取用户的输入文本。##何时使用 Entry 组件#xff1f;Entry 组件仅允许用于输入一行文本#xff0c;如果用于输入的字符串长度比该组件可显示空间更长#xff0c;那内容将被滚动。这意味着该字符串将不能被全部看…The Tkinter Entry Widget##简介Entry(输入框)组件通常用于获取用户的输入文本。##何时使用 Entry 组件Entry 组件仅允许用于输入一行文本如果用于输入的字符串长度比该组件可显示空间更长那内容将被滚动。这意味着该字符串将不能被全部看到(你可以用鼠标或键盘的方向键调整文本的可见范围)。如果你希望接收多行文本的输入可以使用 Text 组件(后面介绍)。##用法使用代码为 Entry 组件添加文本可以使用 insert() 方法。如果要替换当前文本可以先使用 delete() 方法再使用 insert() 方法实现from tkinter import *master Tk()e Entry(master)e.pack(padx20, pady20)e.delete(0, end)e.insert(0, 默认文本...)master.mainloop()获取当前输入框的文本可以使用 get() 方法s e.get()你也可以绑定 Entry 组件到 Tkinter 变量(StringVar)并通过该变量设置和获取输入框的文本v StringVar()e Entry(master, textvariablev)e.pack()v.set(老甲鱼)s v.get()下边的例子演示将 Entry 组件和 Button 组件配合点击 “获取信息” 按钮时自动清空输入框并将内容输出from tkinter import *root Tk()Label(root,text作品).grid(row0,column0)Label(root,text作者).grid(row1,column0)e1 Entry(root)e2 Entry(root)e1.grid(row0,column1,padx10,pady5)e2.grid(row1,column1,padx10,pady5)def show():print(作品:《%s》 %e1.get())print(作者:%s %e2.get())e1.delete(0, end)e2.delete(0, end)Button(root,text 获取信息,width 10,command show)\.grid(row 3,column 0,sticky W,padx 10,pady 5)Button(root,text 退出, width 10,command root.quit)\.grid(row 3,column 1,sticky E,padx 10,pady 5)mainloop()(代码解析:首先就是先来两个Label标签分别是作品和作者然后刚刚说了这次使用(网格)grid()来布局组件grid的话他是允许用表格的形式来管理组件的位置他的选项有row和column分别代表的是行和列作品这个组件的位置就是在0行0列作者的位置就是在0行0列如上图的分布接着是两个输入框都是放在root窗口再使用grid来布局这两个输入框组件上图可以看到他们是位置分别就是0行1列和1行1列然后再通过padx和pady设置一下内边距好看一些接着是要添加两个按钮首先是第一个按钮是获取信息然后给他设置一下宽度在设置一个command选项当按钮点下时就去执行show方法那么show方法就是输入框对象e1和e2通过get方法获取到文本框的内容然后输出输出完后在用delete方法情况输入框然后退出的按钮的command就设置root.quit就可以了即调用根方法的quit方法接着就是把这两个按钮摆放好即分别是2行0列和2行1列但是要求一个按钮偏左边一个靠右边这里就需要设置一个sticky的属性sticky就是控制组件在 grid 分配的空间中的位置他的值和之前的anchor很相似同样使用n, “e”, “s”, “w” 以及它们的组合来定位(ewsn代表东西南北上北下南左西右东)然后在设置一下padx和pady他就不会挨着墙角了)※运行成功后点击退出是没反应的退不来因为我们使用的 IDLE 也是使用 tkinter 写出来的他们这里会发生冲突双击你源文件打开用系统cmd窗口来运行就可以正常退出如果想在IDLE可以退出可以使用root.destroy最后需要提到的是 Entry 组件允许通过以下几种方式指定字符的位置※数字索引号※anchoe※end※insert鼠标坐标(x)数字索引号常规的 Python 索引号从 0 开始anchor对应第一个被选中的字符(如果有的话)end对应已存在文本的后一个位置insert对应插入光标的当前位置鼠标坐标(x)x 是鼠标位置与 Entry 左侧边缘的水平距离这样就可以通过鼠标相对地定位字符的位置##参数Entry(masterNone, **options) (class)master – 父组件**options – 组件选项下方表格详细列举了各个选项的具体含义和用法选项含义background1. 设置 Entry 的背景颜色2. 默认值由系统指定bg跟 background 一样borderwidth1. 设置 Entry 的边框宽度2. 默认值是 1 或 2 像素bd跟 borderwidth 一样cursor1. 指定当鼠标在 Entry 上飘过的时候的鼠标样式2. 默认值由系统指定exportselection1. 指定选中的文本是否可以被复制到剪贴板2. 默认值是 True3. 可以修改为 False 表示不允许复制文本font1. 指定 Entry 中文本的字体2. 默认值由系统指定foreground1. 设置 Entry 的文本颜色2. 默认值由系统指定fg跟 foreground 一样highlightbackground1. 指定当 Entry 没有获得焦点的时候高亮边框的颜色2. 默认值由系统指定highlightcolor1. 指定当 Entry 获得焦点的时候高亮边框的颜色2. 默认值由系统指定highlightthickness1. 指定高亮边框的宽度2. 默认值是 1 或 2 像素insertbackground指定输入光标的颜色insertborderwidth1. 指定输入光标的边框宽度2. 如果被设置为非 0 值光标样式会被设置为 RAISED3. 小甲鱼温馨提示将 insertwidth 设置大一点才能看到效果哦insertofftime1. 该选项控制光标的闪烁频率(灭)2. 单位是毫秒insertontime1. 该选项控制光标的闪烁频率(亮)2. 单位是毫秒insertwidth1. 指定光标的宽度2. 默认值是 1 或 2 像素invalidcommand1. 指定当输入框输入的内容“非法”时调用的函数2. 也就是指定当 validateCommand 选项指定的函数返回 False 时的函数3. 详见本内容最下方小甲鱼关于验证详解invcmd跟 invalidcommand 一样justify1. 定义如何对齐输入框中的文本2. 使用 leftright 或 center3. 默认值是 leftrelief1. 指定边框样式2. 默认值是 sunken3. 其他可以选择的值是 flatraisedgroove 和 ridgeselectbackground1. 指定输入框的文本被选中时的背景颜色2. 默认值由系统指定selectborderwidth1. 指定输入框的文本被选中时的边框宽度(选中边框)2. 默认值由系统指定selectforeground1. 指定输入框的文本被选中时的字体颜色2. 默认值由系统指定show1. 设置输入框如何显示文本的内容2. 如果该值非空则输入框会显示指定字符串代替真正的内容3. 将该选项设置为 *则是密码输入框state1. Entry 组件可以设置的状态normaldisabled 或 readonly(注意它跟 disabled 相似但它支持选中和拷贝只是不能修改而 disabled 是完全禁止)2. 默认值是 normal3. 注意如果此选项设置为 disabled 或 readonly那么调用 insert() 和 delete() 方法都会被忽略takefocus1. 指定使用 Tab 键可以将焦点移动到输入框中2. 默认是开启的可以将该选项设置为 False 避免焦点在此输入框中textvariable1. 指定一个与输入框的内容相关联的 Tkinter 变量(通常是 StringVar)2. 当输入框的内容发生改变时该变量的值也会相应发生改变validate1. 该选项设置是否启用内容验证2. 详见本内容最下方小甲鱼关于验证详解validatecommand1. 该选项指定一个验证函数用于验证输入框内容是否合法2. 验证函数需要返回 True 或 False 表示验证结果3. 注意该选项只有当 validate 的值非 none 时才有效3. 详见本内容最下方小甲鱼关于验证详解vcmd跟 validatecommand 一样width1. 设置输入框的宽度以字符为单位2. 默认值是 203. 对于变宽字体来说组件的实际宽度等于字体的平均宽度乘以 width 选项的值xscrollcommand1. 与 scrollbar(滚动条)组件相关联2. 如果你觉得用户输入的内容会超过该组件的输入框宽度那么可以考虑设置该选项3. 使用方法可以参考Scrollbar 组件##方法delete(first, lastNone)— 删除参数 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 是鼠标当前的水平位置)然后再将 事件绑定到 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否则返回 Falseselection_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.00.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当出现上边任何一种情况的时候验证none1. 关闭验证功能2. 默认设置该选项(即不启用验证)3. 注意是字符串的 none而非 None上面是他可以设置的值有哪些表示在什么情况下去验证去调用验证函数而验证函数是在validatecommand里边指定的跟button里边的command选项是一样的道理validatecommand函数只能返回 True 或 False 表示验证的结果。一般情况下验证函数只需要知道输入框的内容即可可以通过 Entry 组件的 get() 方法获得该字符串。下边的例子中在第一个输入框输入“老甲鱼”并通过 Tab 键将焦点转移到第二个输入框的时候验证功能被成功触发from tkinter import *master Tk()def test():if e1.get() 老甲鱼:print(正确)return Trueelse:print(错误)e1.delete(0, end)return Falsev StringVar()e1 Entry(master, textvariablev, validatefocusout, validatecommandtest)e2 Entry(master)e1.pack(padx10, pady10)e2.pack(padx10, pady10)master.mainloop()然后invalidcommand 选项指定的函数只有在 validatecommand 的返回值为 False 的时候才被调用。下边的例子中在第一个输入框输入“老甲鱼”并通过 Tab 键将焦点转移到第二个输入框validatecommand 指定的验证函数被触发并返回 False接着 invalidcommand 被触发from tkinter import *master Tk()def test():if e1.get() 老甲鱼:print(正确)return Trueelse:print(错误)e1.delete(0, end)return Falsedef test2():print(我被调用了......)return Truev StringVar()e1 Entry(master, textvariablev, validatefocusout,\validatecommandtest, invalidcommandtest2)e2 Entry(master)e1.pack(padx10, pady10)e2.pack(padx10, pady10)master.mainloop()最后其实 Tkinter 还有隐藏技能不过需要冷却才能触发请听老甲鱼一一道来…Tkinter 为验证函数提供一些额外的选项Tkinter 为验证函数提供一些额外的选项额外选项含义%d操作代码0 表示删除操作1 表示插入操作2 表示获得、失去焦点或 textvariable 变量的值被修改%i1. 当用户尝试插入或删除操作的时候该选线表示插入或删除的位置(索引号)2. 如果是由于获得、失去焦点或 textvariable 变量的值被修改而调用验证函数那么该值是 -1%P1. 当输入框的值允许改变的时候该值有效2. 该值为输入框的最新文本内容%s该值为调用验证函数前输入框的文本内容%S1. 当插入或删除操作触发验证函数的时候该值有效2. 该选项表示文本被插入和删除的内容%v该组件当前的 validate 选项的值%V1. 调用验证函数的原因2. 该值是 focusinfocusoutkey 或 forced(textvariable 选项指定的变量值被修改)中的一个%W该组件的名字不过是 tk 变量在内部注册的名字为一串数字。为了使用这些选项你可以这样写validatecommand(f, s1, s2, …)其中f 就是你“冷却后”的验证函数名s1、s2、s3 这些就是上面表里额外的选项这些选项会作为参数依次传给 f 函数。我们刚刚说了使用隐藏技能前需要冷却其实就是调用 register() 方法将验证函数包装起来(这个f也就是刚刚的上个例子validatecommandtest方法在这里直接套进去不行因为这样子Tkinter他不认认不了你所以需要先调用register() 方法将验证函数先包装起来包装成Tkinter能够认出来的东西)from tkinter import *master Tk()v StringVar()def test(content, reason, name):if content 老甲鱼:print(正确)print(content, reason, name)return Trueelse:print(错误)print(content, reason, name)return FalsetestCMD master.register(test)e1 Entry(master, textvariablev, validatefocusout, validatecommand(testCMD, %P, %v, %W))e2 Entry(master)e1.pack(padx10, pady10)e2.pack(padx10, pady10)master.mainloop()当我故意输入“小甲鱼”的时候DUANG的一下是错误的后来我输入“老甲鱼”嘿又正确了(解析:对比上个例子可以发现test方法不再是没有参数的方法了他有三个参数,是在Entry组件的validatecommand选项中出现:validatecommand(testCMD, ‘%P’, ‘%v’, ‘%W’)第一个%P查看上面的表可以知道是表示说他的值是输入框的最新文本内容就是当输入框的值有改变的时候%P就会有内容作为参数传到test方法的content参数另外两个也是类似的道理他们三个作为额外选项作为参数传给test方法然后%v就是表示该组件当前的 validate 选项的值%W就是表示该组件的名字在这里该组件就是e1输出的就是e1在Tkinter里边注册的名字)转载博客https://blog.csdn.net/w15977858408/article/details/104160155