Tkinter 教程 - 文本输入控件
Tkinter 文本输入控件-Entry
控件允许用户输入只有一种字体类型的单行文本。如果需要更多行,则应使用 Tkinter Text
控件。Entry
控件也可用于显示单行文本。
Tkinter Entry
文本输入控件示例
import tkinter as tk
from tkinter import ttk
def callbackFunc():
resultString.set("{} - {}".format(landString.get(),
cityString.get()))
app = tk.Tk()
app.geometry('200x100')
labelLand = tk.Label(app,
text = "Country")
labelLand.grid(column=0, row=0, sticky=tk.W)
labelCity = tk.Label(app,
text = "City")
labelCity.grid(column=0, row=1, sticky=tk.W)
landString = tk.StringVar()
cityString = tk.StringVar()
entryLand = tk.Entry(app, width=20, textvariable=landString)
entryCity = tk.Entry(app, width=20, textvariable=cityString)
entryLand.grid(column=1, row=0, padx=10)
entryCity.grid(column=1, row=1, padx=10)
resultButton = tk.Button(app, text = 'Get Result',
command=callbackFunc)
resultButton.grid(column=0, row=2, pady=10, sticky=tk.W)
resultString=tk.StringVar()
resultLabel = tk.Label(app, textvariable=resultString)
resultLabel.grid(column=1, row=2, padx=10, sticky=tk.W)
app.mainloop()
此示例代码创建了一个 GUI,用户可以输入国家和城市名称,然后在单击 Get Result
按钮后显示输入的信息。
entryLand = tk.Entry(app, width=20, textvariable=landString)
它创建了一个 Tkinter Entry
控件实例,其宽度为 20 个字符单位。它只能在输入框中显示 20 个字符,因此,如果文本行超过 20 个字符,则需要使用箭头来移动文字来显示剩余的文字。
Entry
控件的文本被分配给 Tkinter 字符串变量 landString
。你可以使用 landString.get()
方法获取文本,并使用 landString.set()
方法设置文本。如果使用 set()
方法,则输入框中的文本会自动更新。
StringVar
的 get()
方法外,你还可以用 Entry
控件对象的 get()
方法来得到 Entry
里面输入的文字。Tkinter Entry
文本输入控件默认文字
我们有两种方法来设置 Entry
默认文字,
set()
方法来设置 Tkinter Entry
控件默认文字
如上例所示,你可以使用 StringVar
的 set()
方法来设置 Tkinter Entry
的默认文字。
例如,
landString.set("Netherlands")
它会将默认文字设置为 Netherlands
insert()
方法来设置 Tkinter Entry
控件默认文字
insert(index,string)
方法在给定的 index
位置插入文字 string
。如果 index
是 END
,它会将文字附加到 Entry
控件。
entryLand.insert(tk.END, "Netherlands")
它将默认文字设置为 Netherlands
。
Index
比控件中已有的文字长度要长的话,那它就跟 insert(END, string)
的效果相同。Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn