如何为 Tkinter 条目制作不可更改的默认文本?
How to make an unchangeable default text for a Tkinter Entry?
我设法在 SO 上找到了关于如何创建具有默认值的 Tkinter 条目的 post(指的是 this one)。下面的代码演示了我的用法:
comCurrent_Label = tk.Entry(root, font = (16), bg = "black", fg = "white", bd = 3, relief = "sunken")
comCurrent_Label.insert(0, ">>> ")
comCurrent_Label.grid(row = 2, column = 0, ipady = 15, ipadx = 175)
但我希望用户无法通过退格太远来删除 >>>
。
我的问题是:如何使该条目的默认文本 unchangeable/undeletable?
最简单的解决方案是将 >>> 放在不同的小部件中,例如标签:
import tkinter as tk
root = tk.Tk()
subframe = tk.Frame(root, bd = 3, relief = "sunken")
lbl = tk.Label(subframe, text=">>> ", font = (16), bg = "black", fg = "white", bd=0, highlightthickness=0)
lbl.pack(side=tk.LEFT)
comCurrent_Label = tk.Entry(subframe, font = (16), bg = "black", fg = "white", bd=0, highlightthickness=0)
comCurrent_Label.pack(side=tk.LEFT)
subframe.grid(row = 2, column = 0, pady = 15, padx = 175)
root.mainloop()
您可能应该将其包装在一个整洁的小子类中。
您可以使用条目小部件的验证功能来防止用户删除前导字符。只需要求任何新值以字符串“>>>”开头,条目将防止用户删除这些字符。
这是一个例子:
import tkinter as tk
def validate(new_value):
return new_value.startswith(">>> ")
root = tk.Tk()
vcmd = root.register(validate)
entry = tk.Entry(root, validate="key", validatecommand=(vcmd, "%P"))
entry.pack(side="top", fill="x", padx=20, pady=20)
entry.insert(0, ">>> ")
root.mainloop()
有关输入验证的更多 in-depth 说明,请参阅 Interactively validating Entry widget content in tkinter
我设法在 SO 上找到了关于如何创建具有默认值的 Tkinter 条目的 post(指的是 this one)。下面的代码演示了我的用法:
comCurrent_Label = tk.Entry(root, font = (16), bg = "black", fg = "white", bd = 3, relief = "sunken")
comCurrent_Label.insert(0, ">>> ")
comCurrent_Label.grid(row = 2, column = 0, ipady = 15, ipadx = 175)
但我希望用户无法通过退格太远来删除 >>>
。
我的问题是:如何使该条目的默认文本 unchangeable/undeletable?
最简单的解决方案是将 >>> 放在不同的小部件中,例如标签:
import tkinter as tk
root = tk.Tk()
subframe = tk.Frame(root, bd = 3, relief = "sunken")
lbl = tk.Label(subframe, text=">>> ", font = (16), bg = "black", fg = "white", bd=0, highlightthickness=0)
lbl.pack(side=tk.LEFT)
comCurrent_Label = tk.Entry(subframe, font = (16), bg = "black", fg = "white", bd=0, highlightthickness=0)
comCurrent_Label.pack(side=tk.LEFT)
subframe.grid(row = 2, column = 0, pady = 15, padx = 175)
root.mainloop()
您可能应该将其包装在一个整洁的小子类中。
您可以使用条目小部件的验证功能来防止用户删除前导字符。只需要求任何新值以字符串“>>>”开头,条目将防止用户删除这些字符。
这是一个例子:
import tkinter as tk
def validate(new_value):
return new_value.startswith(">>> ")
root = tk.Tk()
vcmd = root.register(validate)
entry = tk.Entry(root, validate="key", validatecommand=(vcmd, "%P"))
entry.pack(side="top", fill="x", padx=20, pady=20)
entry.insert(0, ">>> ")
root.mainloop()
有关输入验证的更多 in-depth 说明,请参阅 Interactively validating Entry widget content in tkinter