PageRenderTime 273ms CodeModel.GetById 120ms app.highlight 4ms RepoModel.GetById 147ms app.codeStats 0ms

/Demo/tkinter/matt/entry-with-shared-variable.py

http://unladen-swallow.googlecode.com/
Python | 46 lines | 23 code | 9 blank | 14 comment | 0 complexity | e3cc599b5e9f142d05f2978d50561bbc MD5 | raw file
 1from Tkinter import *
 2import string
 3
 4# This program  shows how to make a typein box shadow a program variable.
 5
 6class 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
44root = App()
45root.master.title("Foo")
46root.mainloop()