from tkinter import *
root = Tk()
Label(root,text='账号:').grid(row=0,column=0)
Label(root,text='密码:').grid(row=1,column=0)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(root,textvariable=v1)
e1.grid(row=0,column=1,padx=10,pady=5)
e1.insert(0,'输入手机号/微信号')
e2 = Entry(root,textvariable=v2,show='*')
e2.grid(row=1,column=1,padx=10,pady=5)
def show():
print('账号:%s' % e1.get())
print('密码:%s' % e2.get())
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()
grid
是把组件按照表格来安排,row
是行,column
是列
e1.insert
是一个特定函数,0是特定序号
e2 = Entry(root,textvariable=v2,show='*')
中的show
是将输入的都变成星号
e1.get可以获得文本内容
button
中的stricky
用法和anchor
一样,用东西南北表示
但是pack
和grid
不能同时使用,即使不是一个组件用
这里引入一个参数validate
以及两个验证参数validatecommand
,invalidcommand
和两个验证函数
如果再输入框中进行了validate
的内容
就执行validatecommand
否则执行invalidcommand
这两个验证函数都只能返回bool
值
from tkinter import *
root = Tk()
v = StringVar()
def text1():
if v.get() == 'yyr':
print('对')
return True
else:
print('错')
return False
def text2():
print('text2被调用了')
return True
e1 = Entry(root,textvariable=v,validate = 'focusout',\
validatecommand=text1,invalidcommand=text2)
e2 = Entry(root)
e1.pack(padx=10,pady=10)
e2.pack(padx=10,pady=10)
mainloop()