Tkinter, Trouble with Message,Label widget

norseman norseman at hughes.net
Mon May 4 20:15:55 EDT 2009


Ioannis Lalopoulos wrote:
> I assume that you create the two windows through two different calls
> to Tkinter.Tk() but you cannot enter two mainloops (at least not in a
> normal way).
> 
> If you want a second window use the Toplevel widget.
> 
> Try the following, it does what you want:
> 
> import Tkinter
> 
> root = Tkinter.Tk()
> 
> my_text = Tkinter.StringVar(root)
> 
> another_window = Tkinter.Toplevel()
> 
> entry = Tkinter.Entry(root, textvar=my_text)
> entry.pack()
> 
> label = Tkinter.Label(another_window, textvar=my_text)
> label.pack()
> 
> root.mainloop()
> 
> In the above example, whatever you type in the entry widget in the
> root window gets reflected in the label widget which is inside the
> second window, the one that was created with Tkinter.Toplevel().
> 
> Hope it helps,
> 
> John
> --
> http://mail.python.org/mailman/listinfo/python-list
> 
================================================
Hendrik van Rooyen  mentioned the textvar too.  Thanks Hendrik

John (Ioannis);
         It took me awhile to get your template to work for me.
         People reading this!  THE ABOVE CODE WORKS JUST FINE - AS IS!!!

My needs are slightly different and it took me a bit to get python and I 
on the same track.  I still have reflexes that demand dictionary 
compliance.  Global is supposed to be Global, really, not just sort of.

Once I get past the children I seem to do OK in python.

like:
mVar= '1234'            according to docs, this is a global
p='%6s\n' % mVar        same
...some code to do something
mVar= '4321'            updates a supposed global

                               these two don't think so
print p                 prints from both of these show the 1234,
print '%s' % p[:]       they do not reflect the updated 'global'


 >>>
 >>> mVar= '1234'
 >>> mVar
'1234'
 >>> p= '%s\n' % mVar
 >>> p
'1234\n'
 >>>
 >>> mVar= '4321'
 >>> mVar
'4321'
 >>> print p
1234
 >>> print '%s' % p[:]
1234
 >>>


The definitive on Toplevel was the biggest help. All I have read have 
never clearly stated its purpose. (A non-root root)

per Tkinter help:
"class Toplevel(BaseWidget, Wm)
      Toplevel widget, e.g. for dialogs.
  ...
"
Since I'm not doing dialogs, I quite reading and move on.




John: Thank you again.

Today: 20090504
copy/paste from Python 2.5.2 on Linux Slackware 10.2

Steve
norseman at hughes.net



More information about the Python-list mailing list