symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/matt/entry-with-shared-variable.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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()