如何在Tkinter中使特定文本不可删除?


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

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

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

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

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

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

示例

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

# Import required libraries
from tkinter import *

# Create an instance of tkinter window
win = Tk()
win.geometry("700x350")

# Define a function to make a text non-removable
def make_non_removable(text):
   return text.startswith("Enter your Email Id:")

# Create an entry widget
entry=Entry(win, bg="black", fg="white")
entry.pack(side="top", fill="x")

# Add a default text
entry.insert(END, "Enter your Email Id:")
validate_entry=(win.register(make_non_removable), '%P')
entry.config(validate='key', validatecommand=validate_entry)

win.mainloop()

输出

执行后,它将在窗口中显示一个Entry部件,其中包含不可删除的默认文本“请输入您的邮箱ID:”。

更新于:2021年12月22日

174 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告