Entry 和 Text 组件都是可接收用户输入的输入框组件,区别是 Entry 是单行输入框组件,Text 是多行输入框组件,而且 Text 可以为不同的部分添加不同的格式,甚至响应事件。
不管是 Entry 还是 Text 组件,程序都提供了 get() 方法来获取文本框中的内容;但如果程序要改变文本框中的内容,则需要调用二者的 insert() 方法来实现。
如果要删除 Entry 或 Text 组件中的部分内容,则可通过 delete(self,first,last=None) 方法实现,该方法指定删除从 first 到 last 之间的内容。
关于 Entry 和 Text 支持的索引需要说明一下,由于 Entry 是单行文本框组件,因此它的索引很简单,比如要指定第 4 个字符到第 8 个字符,索引指定为 (3,8) 即可。但 Text 是多行文本框组件,因此它的索引需要同时指定行号和列号,比如 1.0 代表第 1 行、第 1 列(行号从 1 开始, 列号从 0 开始),如果要指定第 2 行第 3 个字符到第 3 行第 7个字符,索引应指定为 (2.2,3.6)。
此外,正如从前面程序所看到的,Entry 支持双向绑定,程序可以将 Entry 与变量绑定在一起,这样程序就可以通过该变量来改变、获取 Entry 组件中的内容。
下面程序示范了 Entry 和 Text 组件的用法:
from tkinter import * # 导入ttk from tkinter import ttk from tkinter import messagebox class App: def __init__(self, master): self.master = master self.initWidgets() def initWidgets(self): # 创建Entry组件 self.entry = ttk.Entry(self.master, width=44, font=('StSong', 14), foreground='green') self.entry.pack(fill=BOTH, expand=YES) # 创建Entry组件 self.text = Text(self.master, width=44, height=4, font=('StSong', 14), foreground='gray') self.text.pack(fill=BOTH, expand=YES) # 创建Frame作为容器 f = Frame(self.master) f.pack() # 创建五个按钮