如何在处于“只读”状态的 Entry 小部件中插入字符串?

Posted

技术标签:

【中文标题】如何在处于“只读”状态的 Entry 小部件中插入字符串?【英文标题】:How can I insert a string in a Entry widget that is in the "readonly" state? 【发布时间】:2013-01-28 15:02:27 【问题描述】:

我正在尝试获取以省略号 ... 开头的条目。

这是我尝试过的代码:

e = Entry(rootWin, width=60, state="readonly")
e.insert(0, "...")

我认为发生错误是因为我试图在对象被分类为只读之后插入文本。

如何在处于"readonly" 状态的 Tkinter Entry 小部件中插入字符串?

【问题讨论】:

可能重复***.com/questions/3842155 我需要使用 Entry 对象,而不是 Text 对象,因为 text 对象没有只读状态。 【参考方案1】:

这似乎对我有用:

import Tkinter as tk

r = tk.Tk()

e = tk.Entry(r,width=60)
e.insert(0,'...')
e.configure(state='readonly')
e.grid(row=0,column=0)

r.mainloop()

【讨论】:

【参考方案2】:

使用条目的-textvariable 选项:

eText = StringVar()
e = Entry(rootWin, width=60, state="readonly",textvariable=eText)
....
eText.set("...I'm not inserted, I've just appeared out of nothing.")

【讨论】:

【参考方案3】:

解决方法很简单:暂时将状态设置为正常,插入文字,然后设置为禁用。

【讨论】:

丑陋,但确实如此。我尝试在禁用或只读状态下设置文本。两者都不可能。它必须处于正常状态。 Anton 的回答消除了这种来回切换的麻烦,但在您需要某种代理的意义上创造了另一个麻烦。

以上是关于如何在处于“只读”状态的 Entry 小部件中插入字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Python tkinter Entry 小部件状态通过单选按钮切换

在 Entry 小部件中更改光标的位置

在 Tkinter 中按下按钮后如何清除 Entry 小部件?

避免由于启动画面或错误的控制器处于活动状态而丢失小部件发送的通知

获取 Tkinter Entry 小部件的内容

如何将变量连接到 Entry 小部件?