Tkinter / Entry widget problem

John Posner jjposner at optimum.net
Tue Jul 14 10:07:52 EDT 2009


> Andras Szabo wrote:
>
>   
>> Hello. I searched the archives but couldn't find a solution to a
>> problem related to the Entry widget in Tkinter.
>>
>> When creating a pop-up window in an app, which contains an Entry
>> widget, I want this widget to contain some default string, to have all
>> this default string selected (as if the user had manually selected
>> everything), and to have the focus transferred to this widget.
>>
>> (The idea is then that if the window pops up, the user won't have to
>> click or press Tab any more before being able to type what is needed
>> in the textbox, overwriting what is written there already.)
>>
>> I thought this might be the way to go:
>>
>> entrybox=Entry(toplevel_parent_window)
>> entrybox.insert(0,"Some default string")
>> entrybox.select_range(0,END)
>> entrybox.focus_set()
>> entrybox.pack()
>>
>> But it doesn't seem to work - the focus is not transferred to the
>> Entry widget, and the text does not appear to be selected (even though
>> after this entrybox.selection_present() returns True).
>>
>> What am I doing wrong?
>>     
>
> Nothing, I would think. Can you post a minimal runnable example?
>
> Peter

This works for me, on Windows and Linux:

  from Tkinter import *

  rt = Tk()
  rt.title("root window")
  pop = Toplevel()
  pop.title("second window")

  entrybox=Entry(pop)
  entrybox.insert(0,"Some default string")
  entrybox.select_range(0,END)
  entrybox.focus_set()
  entrybox.pack()

  rt.withdraw()
  rt.mainloop()


On Win/XP SP3:

  > python
  Python 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit
   (Intel)] on   win32
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import Tkinter
  >>> Tkinter.TkVersion
  8.5
  >>> Tkinter.TclVersion
  8.5

On Ubuntu Linux (Ubu-SL 2.6.27.14-generic):

  $ python
  Python 2.6.1 (r261:67515, Jan  9 2009, 19:06:23)
  [GCC 4.3.2] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import Tkinter
  >>> Tkinter.TkVersion
  8.4000000000000004
  >>> Tkinter.TclVersion
  8.4000000000000004


-John




More information about the Python-list mailing list