如何在 tkinter 中使特定文本不可移除?

tkinterpythongui-programming更新于 2024/2/4 22:04:17

在 Tkinter 中,用户可以使用两个基本文本输入小部件输入文本:Text 小部件和 Entry 小部件。Text 小部件通常用于接受多行用户输入,而在 Entry 小部件中,用户只能输入单行文本。

您可以使用内置库函数和方法自定义这些小部件并添加其他功能。要验证 Entry 小部件中的输入,可以使用 register() 方法。此方法返回一个字符串,可用于在稍后阶段调用该函数。

要验证 Entry 小部件中的输入,请使用 config(**options) 方法并传递 validate 和 validatecommand 参数。

  • validate − 它表示何时必须调用回调函数来验证给定 Entry 或 Text 小部件中的输入。例如,"key" 是指定每当用户按下 key(从键盘)时,将调用回调函数的值。您还可以使用其他选项,例如 focus、focusin、focusout、none、all 等。

  • validatecommand −它指定取决于回调函数返回值的值。要指定 validatecommand='f' 中的值,您可以使用各种回调替换代码,这些代码说明回调函数如何返回值以及返回哪些值。​​

要验证 Entry 小部件中的输入,您必须注册回调函数并通过传递检查回调函数中定义的条件的参数来配置 Entry 小部件。

示例

现在让我们考虑一个例子,我们想要验证 Entry 小部件,以便用户无法删除特定文本。此外,我们可以通过使用 startswith("string") 函数检查字符串来使其不可移动。

# 导入所需的库
from tkinter import *

# 创建 tkinter 窗口的实例
win = Tk()
win.geometry("700x350")

# 定义一个函数使文本不可移动
def make_non_removable(text):
   return text.startswith("输入您的电子邮件 ID:")

# 创建一个条目小部件
entry=Entry(win, bg="black", fg="white")
entry.pack(side="top", fill="x")

# 添加默认文本
entry.insert(END, "输入您的电子邮件 ID:")
validate_entry=(win.register(make_non_removable), '%P')
entry.config(validate='key', validcommand=validate_entry)

win.mainloop()

输出

执行时,它将在窗口中显示一个条目小部件,其中包含默认的不可移动文本 "输入您的电子邮件ID:"。


相关文章


有用资源