Python 如何为Tkinter条目创建不可更改的默认文本?

Python 如何为Tkinter条目创建不可更改的默认文本?,python,tkinter,default-value,tkinter-entry,Python,Tkinter,Default Value,Tkinter Entry,我已经找到了一篇关于如何创建带有默认值的Tkinter条目的文章(参考)。下面的代码演示了我对它的使用: comCurrent\u Label=tk.Entry(根,font=(16),bg=“黑色”,fg=“白色”,bd=3,relief=“凹陷”) comCurrent_标签。插入(0,“>>”) comCurrent_Label.grid(行=2,列=0,ipady=15,ipadx=175) 但是我希望用户不能通过太远的退格来删除> 我的问题是:如何使该条目的默认文本不可更改/不可删除

我已经找到了一篇关于如何创建带有默认值的Tkinter条目的文章(参考)。下面的代码演示了我对它的使用:

comCurrent\u Label=tk.Entry(根,font=(16),bg=“黑色”,fg=“白色”,bd=3,relief=“凹陷”)
comCurrent_标签。插入(0,“>>”)
comCurrent_Label.grid(行=2,列=0,ipady=15,ipadx=175)
但是我希望用户不能通过太远的退格来删除
>


我的问题是:如何使该条目的默认文本不可更改/不可删除?

最简单的解决方案是将>>>放在不同的小部件中,如标签:

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()
有关条目验证的更深入解释,请参阅