Home | History | Annotate | Download | only in matt
      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