# Tkinter教程之Entry篇
# Entry用来输入单行文本
from tkinter import * root = Tk()
# 创建entry
Entry(root, text='input your text here').pack()
# 上面的代码目的是创建一个Entry对象,并在Entry上显示'input your text here',运行此代码,并没有看到文本的显示,
# 由此可知与Lable和Button不同,Entry的text属性不可以设置Entry的文本 '''''2.在Entry中设定初始值,使用textvariable将变量与Entry绑定'''
e = StringVar()
entry = Entry(root, textvariable=e).pack()
e.set('input your text here') '''''3.设置为只读Entry.
Entry的另一个比较有用的属性,设置为只读,不允许用户对它的值改变。
设置state属性为'readonly'
'''
e2 = StringVar()
entry = Entry(root, textvariable=e2)
e2.set('not modify')
entry.pack()
entry['state'] = 'readonly'
# 实际上Entry的属性值可以使用的也为normal/active/disabled,'readonly'与disabled一样
root.mainloop()
[python] view plain copy '''''4.设置为密码输入框
#将Entry作为一个密码输入框来使用,即不显示用户输入的内容值,用特定符号代替。使用用属性
show来指定。
'''
from tkinter import * root = Tk()
e = StringVar()
entry = Entry(root, textvariable=e)
e.set('input your text here')
entry.pack()
# 使用*来显示输入的内容,如果喜欢可以改为其它字符
entry['show'] = '*'
# 分别使用*#$显示输入的文本内容
for mask in ['*', '#', '$']:
e = StringVar()
entry = Entry(root, textvariable=e)
e.set('password')
entry.pack()
entry['show'] = mask root.mainloop()
[python] view plain copy '''''5.验证输入的内容是否符合要求。
Entry 组件是支持验证输入内容的合法性的,比如要求输入数字,你输入了字母那就是非法。
实现该功能,需要通过设置 validate、validatecommand 和 invalidcommand 选项。 首先启用验证的“开关”是 validate 选项,该选项可以设置的值有:
focus:当 Entry 组件获得或失去焦点的时候验证
focusin: 当 Entry 组件获得焦点的时候验证
focusout: 当 Entry 组件失去焦点的时候验证
key:当输入框被编辑的时候验证
all: 当出现上边任何一种情况的时候验证 其次是为 validatecommand 选项指定一个验证函数,该函数只能返回 True 或 False 表示验证的结果。
一般情况下验证函数只需要知道输入框的内容即可,可以通过 Entry 组件的 get() 方法获得该字符串。 然后,invalidcommand 选项指定的函数只有在 validatecommand 的返回值为 False 的时候才被调用。
'''
from tkinter import * root = Tk()
e = StringVar() def validateText():
val = entry.get()
if val == '654321':
print("正确!")
return True
else:
'''''
删除内容,-- 删除参数 first 到 last 范围内(包含 first 和 last)的所有内容
-- 如果忽略 last 参数,表示删除 first 参数指定的选项
-- 使用 delete(0, END) 实现删除输入框的所有内容
'''
entry.delete(0, END)
return False def test():
print('invalidcommand:我被调用了')
return True entry = Entry(root, textvariable=e, validate='focusout', validatecommand=validateText,invalidcommand=test)
entry.pack()
Entry(root, text='sure').pack()
root.mainloop()
# 还有其他的属性fg/bg/relief/width/height/justify/state使用方法与Button相同,不再举例。
[python] view plain copy '''''
最后,其实 Tkinter 还有隐藏技能,不过需要冷却才能触发,请听小甲鱼一一道来......
Tkinter 为验证函数提供一些额外的选项:
额外选项 含义
'%d' 操作代码:0 表示删除操作;1 表示插入操作;2 表示获得、失去焦点或 textvariable 变量的值被修改
'%i' 1. 当用户尝试插入或删除操作的时候,该选线表示插入或删除的位置(索引号)
2. 如果是由于获得、失去焦点或 textvariable 变量的值被修改而调用验证函数,那么该值是 -1
'%P' 1. 当输入框的值允许改变的时候,该值有效
2. 该值为输入框的最新文本内容
'%s' 该值为调用验证函数前输入框的文本内容
'%S' 1. 当插入或删除操作触发验证函数的时候,该值有效
2. 该选项表示文本被插入和删除的内容
'%v' 该组件当前的 validate 选项的值
'%V' 1. 调用验证函数的原因
2. 该值是 'focusin','focusout','key' 或 'forced'(textvariable 选项指定的变量值被修改)中的一个
'%W' 该组件的名字 为了使用这些选项,你可以这样写:validatecommand=(f, s1, s2, ...) 其中,f 就是你“冷却后”的验证函数名,s1、s2、s3 这些是额外的选项,这些选项会作为参数依次传给 f 函数。
我们刚刚说了,使用隐藏技能前需要冷却,其实就是调用 register() 方法将验证函数包装起来:
'''
from tkinter import * master = Tk() v = StringVar() def test(content, reason, name):
if content == "小甲鱼":
print("正确!")
print(content, reason, name)
return True
else:
print("错误!")
print(content, reason, name)
return False testCMD = master.register(test)
e1 = Entry(master, textvariable=v, validate="focusout", validatecommand=(testCMD, '%P', '%v', '%W'))
e2 = Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10) mainloop()

  

python 之Entry的更多相关文章

  1. python from entry to abandon4

    python from entry to abandon系列的收官之作    本篇博客将会介绍<简明Python教程>的最后四章内容.并在最后附上对于本书的个人评价和下阶段自学Python ...

  2. Python Tkinter Entry(文本框)

    Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...

  3. python tkinter entry

    """小白随笔,大佬勿喷""" '''Entry编辑框 收集数据''' import tkinter as tk import tkinte ...

  4. python from entry to abandon3

    第十章的内容是解决问题————编写一个Python脚本.在我的电脑上因为Zip命令不能正常工作所以无法给出演示.该章给出了很有意义的编程思路,对以后学习和工作都有不错的参考意义,这部分有兴趣的同学还是 ...

  5. python from entry to abandon2

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...

  6. python from entry to abandon

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...

  7. python entry points 例子

    pbr的介绍不多,http://ju.outofmemory.cn/entry/156745 $ mkdir entry_test; cd entry_test; git init $ mkdir  ...

  8. Python包管理工具setuptools详解及entry point

    1.什么是setuptools? setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.用户在使用setuptool ...

  9. Python Tkinter 文本框(Entry)

    Python Tkinter 文本框用来让用户输入一行文本字符串. 你如果需要输入多行文本,可以使用 Text 组件. 你如果需要显示一行或多行文本且不允许用户修改,你可以使用 Label 组件. 语 ...

随机推荐

  1. C语言前置知识汇编基础--总线【地址总线,控制总线,数据总线】练习题

    寻址就是用一个数字表示一个字节存储单元的地址,而不是表示这个存储单元中的内容,所以不用乘以8. 1. 1个CPU的寻址能力为8KB,那么它的地址总线宽度是多少? 8*1024=8192     共有8 ...

  2. Redis与python

    一.Redis介绍 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库(非关系型数据库). 本质:将数据保存在内存中. 用途:缓存.消息队列. 1.Redis的特点 R ...

  3. 10.12 csp-s模拟测试70 木板+打扫卫生+骆驼

    T1 木板 求$[\sqrt{n},n)$间有多少个数的平方是n的倍数 通过打表可以发现(我没带脑子我看不出来),符合条件的数构成一个等差数列,公差为首项 而首项就是将n质因数分解后每个质因数出现次数 ...

  4. zz错误集锦

    1.csp-s模拟测试63 T1 2e8的数组开bitset会ce,开bool就可以了,bool一位占一个字节,不是四个字节 2.csp-s模拟测试65 T2 把用vector存图改成前向星,就A了, ...

  5. 深挖计算机基础:MySQL实战45讲学习笔记

    参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...

  6. 错误解决:android.view.InflateException: Binary XML file line #11: Error inflating class com.tony.timepicker.TimePicker

    今天在做项目开发时遇到这么一个错误,完整的错误提示信息如下: java.lang.RuntimeException: Unable to start activity ComponentInfo{co ...

  7. Redis系列1——概述

    1. 简介 Redis,key-value内存存储的数据库,全称“”Remote Dictionary Service(Sever)“”,默认端口号:6379 Redis是一个开源的使用ANSI C语 ...

  8. 剑指offer:序列化二叉(前序遍历+层次)

    1. 题目描述 /** 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存. 序列 ...

  9. Azure EA (2) 使用Postman访问国内Azure Billing API

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 请读者先看一下之前的文档内容:Azure EA (1) 查看国内Az ...

  10. IO多路复用(转)

    原文:Python之路,Day9 , IO多路复用(番外篇) 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文 ...