输入字段中是否有不可编辑前缀的配置选项

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()