11

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?

Cœur
  • 37,241
  • 25
  • 195
  • 267
sixglazed
  • 415
  • 2
  • 4
  • 8

3 Answers3

15

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.")
Anton Kovalenko
  • 20,999
  • 2
  • 37
  • 69
14

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()
mgilson
  • 300,191
  • 65
  • 633
  • 696
8

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

Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
  • 1
    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. – BuvinJ Feb 02 '16 at 23:00