How can I insert a string in a Entry widget that is in the "readonly" state?

20,284

Solution 1

This seems to work for me:

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

Solution 2

Use -textvariable option of the Entry:

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

Solution 3

The solution is simple: temporarily set the state to normal, insert the text, then set it to disabled.

Share:
20,284
sixglazed
Author by

sixglazed

Updated on September 01, 2020

Comments

  • sixglazed
    sixglazed over 3 years

    I am trying to obtain an Entry that starts with an ellipsis ....

    Here was the code I tried:

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

    I think the error is occurring because I am trying to insert text after the object has been classified as readonly.

    How can I insert a string in a Tkinter Entry widget that is in the "readonly" state?

  • BuvinJ
    BuvinJ about 8 years
    Ugly, but true. I tried setting the text while in state disabled, or readonly. Neither are possible. It has to be in state normal. Anton's answer eliminates this hassle of switching back and forth, but creates another in the sense that you need a proxy of sorts.