Tkinter 教程 - 文本输入控件

Jinku Hu 2023年1月30日 2018年2月19日
  1. Tkinter Entry 文本输入控件示例
  2. Tkinter Entry 文本输入控件默认文字
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 按钮后显示输入的信息。

Tkinter 文本输入控件例子

entryLand = tk.Entry(app, width=20, textvariable=landString)

它创建了一个 Tkinter Entry 控件实例,其宽度为 20 个字符单位。它只能在输入框中显示 20 个字符,因此,如果文本行超过 20 个字符,则需要使用箭头来移动文字来显示剩余的文字。

Entry 控件的文本被分配给 Tkinter 字符串变量 landString。你可以使用 landString.get() 方法获取文本,并使用 landString.set() 方法设置文本。如果使用 set() 方法,则输入框中的文本会自动更新。

Note
除了 StringVarget() 方法外,你还可以用 Entry 控件对象的 get() 方法来得到 Entry 里面输入的文字。

Tkinter Entry 文本输入控件默认文字

我们有两种方法来设置 Entry 默认文字,

set() 方法来设置 Tkinter Entry 控件默认文字

如上例所示,你可以使用 StringVarset() 方法来设置 Tkinter Entry 的默认文字。

例如,

landString.set("Netherlands")

它会将默认文字设置为 Netherlands

insert() 方法来设置 Tkinter Entry 控件默认文字

insert(index,string) 方法在给定的 index 位置插入文字 string。如果 indexEND,它会将文字附加到 Entry 控件。

entryLand.insert(tk.END, "Netherlands")

它将默认文字设置为 Netherlands

Note
如果 Index 比控件中已有的文字长度要长的话,那它就跟 insert(END, string) 的效果相同。
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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