繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM