文本框组件
文本框的格式
在Python中,文本框Entry用于接收输入的数据。文本框Entry的基本格式为: txt = tkinter.Entry(容器名称,width=宽度, 文字字体、颜色等)

【例6】应用布局 设计一个显示学生信息窗体程序(如图所示)。

#【例6】应用布局 设计一个显示学生信息窗体程序
#程序代码如下:
import tkinter
from tkinter import *
#定义一个窗体
win = tkinter.Tk ()
win.geometry('580x380+10+10')
win.title('学生信息')
L1=Label(win,text="学生信息",font="song -36")
L2=Label(win,text="学号∶",font ="song -20")
#设置文本标签
L3=Label(win,text="姓名∶",font="song-20")
L4=Label(win,text="专业∶",font="song -20")
L1.grid(row=0,column=1)
L2.grid(row=1)
#设置文本标签的排列位置
L3.grid(row=2)
L4.grid(row=3)
photo = PhotoImage(file='pcm.gif')
L_Phot = Label(image=photo) #设置图片及排列位置
L_Phot.image = photo
L_Phot.grid(row=0,column=2,columnspan=2,rowspan=4)
e1 = Entry(win,width=20,font ='song -20')
#设置文本框
e2 = Entry(win,width=20,font ='song -20')
e3 = Entry(win,width=20,font ='song -20')
e1.grid(row=1, column=1)
e2.grid(row=2, column=1)
e3.grid(row=3, column=1)
win.mainloop()
2. 文本框中的内容设置及获取
文本框Entry中文字内容的操作可以使用StringVar()对象来完成。
StringVar()是Tkinter 模块的对象,它可以跟踪变量值的变化,把最新的值显示到界面上。 把Entry的textvariable属性设置为StringVar(),再通过StringVar()的get()和set()函数读取和输出相应内容。这样,文本框中始终显示的值。
【例7】设计一个密码验证程序。
#编写程序代码如下:
from tkinter import *
win=Tk()
win.geometry('480x116')
win.title("密码验证")
#提交按钮事件
def mClick():
tm=txt1.get()
txt=txt2.get()
if txt=="admin" :
txt3.set("\n\n 通过验证,欢迎进入本系统! ")
Lab1=Label(win, text = '请输入用户名:',font='Helvetica -16 bold')
Lab2=Label(win, text = ' 密码: ',font='song-16',fg='Red')
txt1=StringVar()
txt2=StringVar()
txt3=StringVar()
txt3.set("请输入用户名及密码")
en1 = Entry(win,textvariable=txt1,width=16,font ='song -16')
en2 = Entry(win,textvariable=txt2,width=16,font ='song -16')
button=Button(win,text="提交",command=mClick,font ='song -16')
Lab3=Label(win, textvariable=txt3,relief='ridge',font='song-20',fg='blue')
# 布置设置
Lab1.grid(row=0, column=0)
Lab2.grid(row=1, column=0)
en1.grid(row=0, column=1)
en2.grid(row=1, column=1)
Lab3.grid(row=2, column=0,columnspan=2,)
button.grid(row=2, column=2)
win.mainloop()

【例7B】 编写一个小程序,功能是在顶层窗口安放一个单行文本框,接收输入的隐蔽密码。再安放两个按钮,一个名为“Send out”,一个名为“Return”。单击“Send out”,会将用户输入的密码内容在屏幕上显示出来;单击“Return”,立即结束程序运行,退出顶层窗口。顶层窗口的情形如图所示。

#程序代码
import tkinter
top=tkinter.Tk()
top.title('python GUI')
def callback(): #定义回调函数
x=ent1.get()
print('your password is:',x)
ent1=tkinter.Entry(top,show='*',font=('Verdana',16))
ent1.pack(pady=12)
ent1.focus_set()
btn1=tkinter.Button(top,text='Send out',width=10,fg='red',font=('Verdana',14,'bold','italic'),command=callback)
btn1.pack(side='left',padx=8)
btn2=tkinter.Button(top,text='Return',width=10, fg='red',font=('Verdana',14,'bold','italic'),command=quit)
btn2.pack(side='left',padx=8)
top.mainloop()
说明:(1)通过tkinter中的类Entry,创建了单行文本框ent1。创建时,传递给类Entry的参数中,要关注的是show,这个属性会决定往文本框中输入信息时,用什么字符来代替它。这里由于传递的是show='*',因此表示是用一个个“*”代替用户所输入的信息。
(2)文本框ent1调用版面布局方法pack(),将其安放到顶层窗口里。
(3)单行文本框ent1调用该控件的方法focus_set()。在Python中,用鼠标单击某文本框时,该框立刻会出现输入光标“Ⅰ”。出现输入光标的这个控件,就被称为获得了“焦点”。文本框ent1调用方法focus_set(),意味着将输入焦点设置在了该文本框。于是,执行了语句 ent1.focus_set(),顶层窗口中的文本框ent1里就自动有了输入光标,无须再用鼠标去单击它。
(4)由按钮对象btn1调用版面布局方法pack(),依照传递的参数side='left'和padx=8,将该控件安放到顶层窗口上。由此应该知道,出现在顶层窗口里的控件对象,只有调用了pack(),才能够真正显现在窗口,否则是显示不出来的。
(5)创建了按钮类Button的另一个控件btn2。用鼠标单击这个按钮时,执行的回调函数是quit()(即command=quit),表示整个程序退出顶层窗口。
从这个例子可以知道:
(1)在顶层窗口上创建各种控件对象后,只有该对象调用了版面布局函数pack()(或者别的布局函数),它才能够真正被放到顶层窗口上,否则它是不会显现出来的;
(2)要搞清楚在顶层窗口上安放的按钮对象,何时呈现为垂直安排(默认),何时呈现为水平安排(例如,通过函数pack()里的side参数)。

