[英]Is there a config option for non-editable prefixes in entry field
我正在尝试使用 Tkinter 制作我自己的控制台,我希望能够在输入字段中显示一个前缀,并使用 console.prefix("prefix_goes_here") 来设置所述前缀。 但是当我使用 entry.set("prefix_goes_here") 时,用户可以删除前缀。
我的意思的例子可以在 CMD 中找到
C:\Users\Nathan>command_goes_here
">" 之前的所有内容都是我将其归类为前缀的内容(但我不知道它是否有正式名称,所以我只是澄清一下)。
我还希望仍然能够使用 entry.get() 获取这个前缀,但我可以将前缀存储在一个变量中,然后再添加它。
没有配置选项。
一种技术是使用Entry
小部件的验证功能。 在验证功能中,您可以检查条目是否包含前缀,如果不包含则拒绝编辑。
有关条目验证的更多示例,请参阅交互式验证 tkinter 中的条目小部件内容
import tkinter as tk
class Example():
def __init__(self):
root = tk.Tk()
self.prefix = r'C:\Users\Nathan> '
vcmd = (root.register(self.onValidate), '%P')
self.entry = tk.Entry(root, validate="key", validatecommand=vcmd)
self.entry.pack(padx=20, pady=20)
self.entry.insert(0, self.prefix)
def onValidate(self, P):
return P.startswith(self.prefix)
e = Example()
tk.mainloop()
虽然我没有找到您要问的确切内容,但我建议使用 2 个条目小部件,一个并排没有边框。
import tkinter as tk
root = tk.Tk()
e = tk.Entry(root)
e.configure(state="normal",borderwidth=0,highlightthickness=0)
e.insert(tk.END, "C:\\Users\\Nathan>")
e.configure(bg='white')
e.place(x=0,y=0)
e2 = tk.Entry(root)
e2.configure(bg='white',borderwidth=0,highlightthickness=0)
e2.place(x=97,y=0)
e2.config(state="normal")
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.