Tkinter库的学习记录05-文本框Entry
2026/7/11 1:36:47 网站建设 项目流程

5、文本框Entry

5-1 文本框Entry的基本概念

所谓的文本框Entry,通常是指单行的文本框,在GUI程序设计中这是用于输入的最基本的Widget控件,我们可以使用它输入单行字符串,如果所输入的字符串长度大于文本框的宽度,所输入的文字会自动隐藏造成部分内容无法显示。碰到这种情况时,可以使用箭头键移动鼠标光标到看不到的区域。需留意的是文本框Entry限定是单行文字,如果想要处理多行文字需使用Widget控件中的Text,后面会详解。Entry的使用格式如下。

Entry(父对象, option, ...)

参数一:同上

下面是Entry()方法内其它常用的option参数

(1) bg或background:背景色彩。

(2) borderwidth或bd:边界宽度默认是2像素。

(3) command:当用户更改内容时,会自动执行此函数。

(4) cursor:当鼠标光标在复选框上时的光标形状、

(5) exportselection:如果执行选取时,所选取的字符串会自动输出至剪贴板,如果想要避免,可以设置exportselection=0.

(6) fg或foreground:前景色彩。

(7) font:字形

(8) height:高,单位时字符高

(9) highlightbackground:当文本框取得焦点时背景颜色。

(10) highlightcolor:当文本框取得焦点时的颜色。

(11) justify:当含多行文字时,最后一行的对齐方式。

(12) relief:默认是relief=FLAT,可由此控制文字外框。

(13) selectbackground:被选取字符串的背景色彩

(14) selectborderwidth:选取字符串时的边界宽度,预设是1。

(15) selectfroeground:被选取字符串的前景色彩。

(16) show:显示输入字符,例如,show=’*‘表示显示星号,常用作输入密码字段。

(17) state:输入状态,默认是NORMAL表示可以输入,DISABLE则表示无法输入。

(18) textvariable:文字变量。

(19) width:宽,单位是字符宽。

(20) xscrollcommand:在x轴使用滚动条

下面程序,在窗口内建立标签和文本框,输入姓名和地址。

from tkinter import * root = Tk() root.title("ch5_1") nameL = Label(root, text="Name ") nameL.grid(row=0) addressL = Label(root, text="Address ") addressL.grid(row=1) nameE = Entry(root) addressE = Entry(root) nameE.grid(row=0, column=1) addressE.grid(row=1, column=1) root.mainloop()

运行结果

上述代码中设置grid(row=0),在没有设置"column=x"的情况下,系统将自动设置"column=0"。

5-2 使用show参数隐藏输入的字符

其实Entry控件具有可以使用show参数设置隐藏输入字符的特性,所以也常被应用与密码的输入控制。

下面程序中模拟登录界面,有输入账号和密码,当输入密码时所输入的字符将隐藏并用"*"字符显示。

from tkinter import * root = Tk() root.title("ch5_2") accountL = Label(root, text="Account ") accountL.grid(row=0) pwdL = Label(root, text="Password ") pwdL.grid(row=1) accountE = Entry(root) pwdE = Entry(root, show='*') accountE.grid(row=0, column=1) pwdE.grid(row=1, column=1) root.mainloop()

运行结果

下面代码建立一个公司网页登录界面。

from tkinter import * root = Tk() root.title("ch5_3") msg = "欢迎进入Silicon Stone Education系统" Png = PhotoImage(file="tubiao.png") logo = Label(root, image=Png, text=msg, compound=BOTTOM) accountL = Label(root, text="Account") accountL.grid(row=1) pwdL = Label(root, text="Password ") pwdL.grid(row=2) logo.grid(row=0, column=0, columnspan=2, padx=10, pady=11) accountE = Entry(root) pwdE = Entry(root, show='*') accountE.grid(row=1, column=1) pwdE.grid(row=2, column=1, padx=10) root.mainloop()

执行结果

5-3 Entry的get()方法

Entry有一个get()方法,可以利用这个方法获得目前Entry的字符串内容。Widget控件有一个常用方法Quit,执行此方法时Python Shell窗口的程序将结束,但是此窗口应用程序继续运行。

扩展上面网页的登录页面,增加Login和Quit功能按钮。如果单击Login功能按钮,在Python Shell中将列出所输入的Account和Password;若是单击Quit按钮,则Python Shell窗口执行结束,但是屏幕上仍可以看到此窗口在执行。

from tkinter import * def printInfo(): print("Account: ", accountE.get()) print("Password: ", pwdE.get()) root = Tk() root.title("ch5_4") msg = "欢迎进入Silicon Stone Education系统" Png = PhotoImage(file="tubiao.png") logo = Label(root, image=Png, text=msg, compound=BOTTOM) accountL = Label(root, text="Account") accountL.grid(row=1) pwdL = Label(root, text="Password ") pwdL.grid(row=2) logo.grid(row=0, column=0, columnspan=2, padx=10, pady=11) accountE = Entry(root) pwdE = Entry(root, show='*') accountE.grid(row=1, column=1) pwdE.grid(row=2, column=1, padx=10) # 以下建立Login和Quit按钮 loginbtn = Button(root, text="Login", command=printInfo) loginbtn.grid(row=3, column=0) quitbtn = Button(root, text="Quit", command=root.quit) quitbtn.grid(row=3, column=1) root.mainloop()

运行结果

从上述结果可以看到,Login按钮和Quit按钮并没有对齐上方的标签和文本框,我们可以在grid()方法内增加sticky参数,同时将此参数设为W,即可靠左对齐字段。

下面使用sticky=W参数和padx=10参数,重新设计上面代码。

from tkinter import * def printInfo(): print("Account: ", accountE.get()) print("Password: ", pwdE.get()) root = Tk() root.title("ch5_4") msg = "欢迎进入Silicon Stone Education系统" Png = PhotoImage(file="tubiao.png") logo = Label(root, image=Png, text=msg, compound=BOTTOM) accountL = Label(root, text="Account") accountL.grid(row=1) pwdL = Label(root, text="Password ") pwdL.grid(row=2) logo.grid(row=0, column=0, columnspan=2, padx=10, pady=10) accountE = Entry(root) pwdE = Entry(root, show='*') accountE.grid(row=1, column=1) pwdE.grid(row=2, column=1, padx=10) # 以下建立Login和Quit按钮 loginbtn = Button(root, text="Login", command=printInfo) loginbtn.grid(row=3, column=0, sticky=W, padx=5) quitbtn = Button(root, text="Quit", command=root.quit) quitbtn.grid(row=3, column=1, sticky=W, padx=10) root.mainloop()

运行结果

5-4 Entry的insert()方法

在设计GUI程序时,常常需要在建立Entry的文本框内默认建立输入文字,在Widget的Entry控件中可以使用insert(index, s)方法插入字符串,其中,s时所插入的字符串,字符串会插入在index位置。设计程序时可以使用这个方法为文本框建立默认的文字,通常会将它放在Entry()方法建立完文本框后。

下面程序为Account文本框建立默认文字为"Kevin",为password文本框建立默认文字为"pwd"

accountE = Entry(root) pwdE = Entry(root, show='*') accountE.insert(0, "Kevin") pwdE.insert(0, "123")

运行结果

5-5 Entry的delete()方法

在tkinter模块的应用中可以使用delete(first, last=None)方法删除Entry内的从第first字符到第last-1字符间的字符串,如果要删除整个字符串可以使用delete(0, END)。

下面程序扩展了上面的程序,当单击Login按钮后,清空文本框Entry中的内容

def printInfo(): print("Account: ", accountE.get()) print("Password: ", pwdE.get()) accountE.delete(0, END) pwdE.delete(0, END)

运行结果

5-6 计算数学表达式使用eval()

Python内有一个非常好用的计算数学表达式的函数eval,该函数可以直接传回此数学表达式的计算结果。它的语法如下。

result = eval(expression) # express 是字符串

上述计算结果也是用字符串传回。

下面代码中输入数学表达式,本程序会传回执行结果

expression = input("请输入数学表达式: ") print("结果是: ", eval(expression))

运行结果

PS E:\code\python\GuiTkinter\ch5> python .\ch5_1.py 请输入数学表达式: 9*10+8 结果是: 98 PS E:\code\python\GuiTkinter\ch5>

了解了eval()函数的用法后,可以将上述程序改为GUI程序。

from tkinter import * def cal(): out.configure(text="结果: " + str(eval(equ.get()))) root = Tk() root.title("ch5_9") label = Label(root, text="请输入数学表达式:") label.pack() equ = Entry(root) equ.pack(pady=5) out = Label(root) out.pack() btn = Button(root, text="计算", command=cal) btn.pack(pady=5) root.mainloop()

运行结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询