已获原作者授权. 原系列地址: Python Tkinter
简介
Entry 是 Tkinter 用来接收字符串等输入的控件. 该控件允许用户输入一行文字. 如果用户输入的文字长度长于 Entry 控件的宽度时, 文字会向后滚动. 这种情况下所输入的字符串无法全部显示. 点击箭头符号可以将不可见的文字部分移入可见区域. 如果你想要输入多行文本, 就需要使用 Text 控件. Entry 控件只能使用预设字体.
使用 Entry 控件的语法如下:
w = Entry(master, option, ...)
master 参数为其父控件, 就是用来放置这个 Entry 的控件. 像其他控件一样, 我们可以在创建 Entry 控件之后再为其指定属性. 因此创建方法中的 options 选项可以为空.
下例为一个显示了两个 Entry 控件的应用. 一个用来输入姓氏, 一个用来输入名字. 我们用不带参数的构造方法创建 Entry.
from tkinter import *
master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
mainloop( )
上面代码运行后生成如下窗口:
现在我们已经创建了两个 Entry, 用户可以在这个应用中输入数据. 但我们的程序如何得到这些数据呢?
方法很简单, 调用 Entry 类的 get() 方法即可. 我们改进了上面的程序, 添加了 "退出" 和 "显示" 两个按钮. 在 "显示" 按钮上, 我们绑定了 show_entry_fields() 函数, 该函数会调用 Entry 类的 get() 方法. 这样每次 "显示" 按钮被点击, Entry 控件的内容就会打印在终端里.
from tkinter import *
def show_entry_fields():
print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))
master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4