Python-GUI基础-02

77.输入框组件

1)简单的entry组件实现简单的输入框

from tkinter import *

root=Tk()#一个根弹窗对象

e=Entry(root)

e.pack(padx=10,pady=10)

mainloop()

2)输入框自带默认输入文本:利用entry组件对象的insert方法实现

from tkinter import *

root=Tk()#一个根弹窗对象

e=Entry(root)

e.pack(padx=10,pady=10)

e.insert(0,'hahaha...')

mainloop()

3)获取输入框内容利用entry组件对象的get方法

3-1)作品和作者的输入和输出

from tkinter import *

root=Tk()#一个根弹窗对象

Label(root,text='作品:').grid(row=0,column=0)

Label(root,text='作者:').grid(row=1,column=0)

e1=Entry(root)

e2=Entry(root)

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())

Button(root,text='获取信息',width=10,command=show).grid(row=3,column=0,sticky=W)

Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky=E)

mainloop()

解析如下:

定义一个根弹窗对象root=Tk()

利用grid函数布局作品和作者,及二者输入框 及两个底部按钮对象

作者、作品 两个属于label标签,对应两个输入框是Entry对象、两个按钮属于button对象

按钮触发需要提交并打印出两个输入框内容,这个利用按钮的command实现,让其等于一个韩式,这个韩数是show

show函数中利用Entry对象的get方法获取输入框输入的内容

3-2)密码输入框:利用星号替代

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)

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('账号:<%s>'% e1.get())

   print('密码:<%s>'% e2.get())

Button(root,text='芝麻开门',width=10,command=show).grid(row=3,column=0,sticky=W)

Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky=E)

mainloop()

3-3)输入框校验

from tkinter import *

root=Tk()

def test():

   if e1.get()=='yangfei':

       print('goog')

       return True

   else:

       print('wrong')

       e1.delete(0,END)

       return False

v=StringVar()

e1=Entry(root,textvariable=v,validate='focusout',validatecommand=test)

e2=Entry(root)

e1.pack(padx=10,pady=10)

e2.pack(padx=10,pady=10)

mainloop()

解析:利用validate定义检测动作是较短移出,focusout,当发生这个的是哦胡,要调用validatecommand的函数进行校验

3-4)校验出输入的异常后的继续调用函数

from tkinter import *

root=Tk()

def test():

   if e1.get()=='yangfei':

       print('goog')

       return True

   else:

       print('wrong')

       e1.delete(0,END)

       return False

def test2():

   print('haha')

   return True

v=StringVar()

e1=Entry(root,textvariable=v,validate='focusout',validatecommand=test,invalidcommand=test2)

e2=Entry(root)

e1.pack(padx=10,pady=10)

e2.pack(padx=10,pady=10)

mainloop()

3-5)计算器

from tkinter import *

root=Tk()

frame=Frame(root)

frame.pack(padx=10,pady=10)

v1=StringVar()

v2=StringVar()

v3=StringVar()

def test(content):

   return content.isdigit()

testCMD=root.register(test)

e1=Entry(frame,width=10,textvariable=v1,validate='key',validatecommand=(testCMD,'%p')).grid(rpw=0,column=0)

Label(frame,text='+').grid(row=0,column=1)

e2=Entry(frame,width=10,textvariable=v2,validate='key',validatecommand=(testCMD,'%p')).grid(rpw=0,column=2)

Label(frame,text='=').grid(row=0,column=3)

e3=Entry(frame,width=10,textvariable=v3,state='readonly').grid(row=0,column=4)

def calc():

   result=int(e1.get())+int(e2.get())

   v3.set(str(result))

Button(frame,text='jieguo',command=calc).grid(row=1,column=2,pady=5)

mainloop()

你可能感兴趣的:(Python-GUI基础-02)