home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Demo / tkinter / matt / entry-with-shared-variable.py < prev    next >
Text File  |  1996-11-27  |  2KB  |  48 lines

  1. from Tkinter import *
  2. import string 
  3.  
  4. # This program  shows how to make a typein box shadow a program variable.
  5.  
  6. class App(Frame):
  7.     def __init__(self, master=None):
  8.     Frame.__init__(self, master)
  9.     self.pack()
  10.  
  11.     self.entrythingy = Entry(self)
  12.     self.entrythingy.pack()
  13.  
  14.     self.button = Button(self, text="Uppercase The Entry",
  15.                  command=self.upper)
  16.     self.button.pack()
  17.  
  18.     # here we have the text in the entry widget tied to a variable.
  19.     # changes in the variable are echoed in the widget and vice versa. 
  20.     # Very handy.
  21.     # there are other Variable types. See Tkinter.py for all
  22.     # the other variable types that can be shadowed
  23.     self.contents = StringVar()
  24.     self.contents.set("this is a variable")
  25.     self.entrythingy.config(textvariable=self.contents)
  26.  
  27.     # and here we get a callback when the user hits return. we could
  28.     # make the key that triggers the callback anything we wanted to.
  29.     # other typical options might be <Key-Tab> or <Key> (for anything)
  30.     self.entrythingy.bind('<Key-Return>', self.print_contents)
  31.  
  32.     def upper(self):
  33.     # notice here, we don't actually refer to the entry box.
  34.     # we just operate on the string variable and we 
  35.         # because it's being looked at by the entry widget, changing
  36.     # the variable changes the entry widget display automatically.
  37.     # the strange get/set operators are clunky, true...
  38.     str = string.upper(self.contents.get())
  39.     self.contents.set(str)
  40.  
  41.     def print_contents(self, event):
  42.     print "hi. contents of entry is now ---->", self.contents.get()
  43.  
  44. root = App()
  45. root.master.title("Foo")
  46. root.mainloop()
  47.  
  48.