您的位置:首页 > 其它

小白学tkinter(Entry组件)

2017-08-05 22:43 232 查看
# Entry用来输入单行文本
'''''1.第一个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)
#上边这句可以改为 entry = Entry(root,textvariable = e2,state = 'readonly')
e2.set('not modify')
entry.pack()
entry['state'] = 'readonly'  #用这个方法设置属性太笨笨了,看上边可以更加便捷
# 实际上Entry的属性值可以使用的也为#normal/active/disabled,'readonly'与disabled一样
root.mainloop()
'''''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()
'''''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()
def test():
if e1.get() == '小甲鱼':
print('正确')
return True
else:
print('错误')
e1.delete(0,END)
return False
def test2():
print('invalidcommand被调用了')
return True
v = StringVar()
e1 = Entry(root,textvariable = v,validate = 'focusout',\
validatecommand = test,invalidcommand = test2)
e2 = Entry(root)
e1.pack()
e2.pack()
mainloop()
# 还有其他的属性fg/bg/relief/width/height/justify/state使用方法与Button相同,不再举例。
[Python学习记录--关于Tkinter Entry(文本框)的选项、方法说明,以及一些示例。](http://www.cnblogs.com/onlyfu/archive/2013/03/07/2947473.html)
-----------------------------------------------------
'''小甲鱼的例子'''
from tkinter import *
root = Tk()
Label(root,text = '账号:').grid(row = 0)
Label(root,text = '密码:').grid(row = 1)

v1 = StringVar()
v2 = StringVar()
#将变量,通常是StringVar绑定到textvariable上
e1 = Entry(root,textvariable = v1)
#将Entry作为一个密码输入框来使用,即不显示用户输入的内容值,用特定符号(这个符号可以用任意符号)代替。使用用属性show来指定,。
e2 = Entry(root,textvariable = v2,show = '*')
e1.grid(row = 0,column = 1,padx = 10,pady = 5)
e2.grid(row = 1,column = 1,padx = 10,pady = 5)
#测试代码,不要管他,呵呵
def show():
print(e1.get())
print(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)#sticky选项控制网格管理器中组件的位置
Button(root,text = '退出',width = 10,command = root.quit)\
.grid(row = 3,column = 1,sticky = E,padx = 10,pady = 5)
root.mainloop()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tkinter