如何在 tkinter 中使特定文本不可删除?
在本文中,我们将讨论如何在 Tkinter 中使特定文本不可移动。但在此之前,让我们知道 Tkinter 为我们提供了什么。
安装
要安装此模块,请在终端中键入以下命令。
pip install tk
Tkinter 中的条目验证操作
在继续使用不可移动文本语法之前,必须了解条目验证的工作原理。 validate 命令的任务是限制可以在 Entry 小部件中输入的文本。
Python3
import tkinter as tk
def text_only(entered_data):
return entered_data.isalpha()
root = tk.Tk()
# the dimensions of the GUI window
root.geometry("300x300")
root.resizable(False, False) # fixed size for GUI
# create a function and pass in register
# the function is to check the validation of Tkinter Box
valid = root.register(text_only), '%S'
entry_box = tk.Entry(validate="key", validatecommand=valid)
entry_box.pack()
# end GUI window with root.mainloop()
root.mainloop()
Python3
import tkinter as tk
def non_removable_text(text):
# Enter Your Name is non-removable Text
return text.startswith("Enter Your Name:")
root = tk.Tk()
root.geometry("300x300")
root.resizable(False, False)
# define a function with non-removable text
# '%P' denotes the value that the text will
# have if the change is allowed.
valid = root.register(non_removable_text), "%P"
# create a Entry widget with a validate of key
# key-specify keystroke
entry = tk.Entry(validate='key', validatecommand=(valid))
# add a message
entry.insert("end", "Enter Your Name:")
entry.place(x=0, y=100, width=300)
root.mainloop()
上述代码的特点是输入框只接受字母,即字母。如果您尝试输入数字或特殊字符,它不会接受。要带走的关键点是这两行代码。
valid = root.register(text_only),'%S'
entry_box = tk.Entry(validate="key", validatecommand=valid)
Valid 是分配给输入框的验证函数的变量。这意味着 root.register 将函数作为参数。 root.register()方法返回一个字符串(仅 alpha),该字符串分配给一个变量“有效”,该变量用于在输入框中触发击键时在后期调用回调函数。 validatecommand 选项中的“%S”表示插入或删除的字符作为参数传递给 text_only()函数。在 Entry 小部件中,我们将validate命令分配给key 。 “ key ”值指定每当任何击键(从键盘输入)更改小部件的内容时都会发生验证。现在,当在条目小部件上按下一个键时,将触发执行 text_only()函数操作的validatecommand 。
考虑到这个逻辑,让我们继续进行使文本不可移动的最后阶段。
Tkinter 中的不可移动文本
为了使特定文本不可移动,我们将创建一个条目小部件。在条目小部件中插入一条不可删除的消息,然后创建一个函数来检查条目小部件是否以该特定消息开头的条件。这个函数在 root.register 方法中作为参数传递。这次我们传递“ %P ”,它表示如果允许更改,文本将具有的值。条目小部件应与触发击键的验证命令一起传递。
例子:
Python3
import tkinter as tk
def non_removable_text(text):
# Enter Your Name is non-removable Text
return text.startswith("Enter Your Name:")
root = tk.Tk()
root.geometry("300x300")
root.resizable(False, False)
# define a function with non-removable text
# '%P' denotes the value that the text will
# have if the change is allowed.
valid = root.register(non_removable_text), "%P"
# create a Entry widget with a validate of key
# key-specify keystroke
entry = tk.Entry(validate='key', validatecommand=(valid))
# add a message
entry.insert("end", "Enter Your Name:")
entry.place(x=0, y=100, width=300)
root.mainloop()
输出: