输入字段中是否有不可编辑前缀的配置选项
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
“>”之前的所有内容都是我想 class 作为前缀(但我不知道它是否有正式名称,所以我只是澄清一下)。
我还希望仍然能够使用 entry.get() 获取此前缀,但我可以将前缀存储在变量中,稍后再添加它。
没有配置选项。
一种技术是使用 Entry
小部件的验证功能。在验证功能中,可以检查条目是否包含前缀,如果不包含则拒绝编辑。
有关条目验证的更多示例,请参阅 Interactively validating Entry widget content in 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()
我正在尝试使用 Tkinter 制作我自己的控制台,并且我希望能够在输入字段中显示前缀并使用 console.prefix("prefix_goes_here") 来设置所述前缀。但是当我使用 entry.set("prefix_goes_here") 时,用户可以删除前缀。
我的意思的例子可以在CMD中找到
C:\Users\Nathan>command_goes_here
“>”之前的所有内容都是我想 class 作为前缀(但我不知道它是否有正式名称,所以我只是澄清一下)。
我还希望仍然能够使用 entry.get() 获取此前缀,但我可以将前缀存储在变量中,稍后再添加它。
没有配置选项。
一种技术是使用 Entry
小部件的验证功能。在验证功能中,可以检查条目是否包含前缀,如果不包含则拒绝编辑。
有关条目验证的更多示例,请参阅 Interactively validating Entry widget content in 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()