symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/guido/switch.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Show how to do switchable panels.
       
     2 
       
     3 from Tkinter import *
       
     4 
       
     5 class App:
       
     6 
       
     7     def __init__(self, top=None, master=None):
       
     8         if top is None:
       
     9             if master is None:
       
    10                 top = Tk()
       
    11             else:
       
    12                 top = Toplevel(master)
       
    13         self.top = top
       
    14         self.buttonframe = Frame(top)
       
    15         self.buttonframe.pack()
       
    16         self.panelframe = Frame(top,  borderwidth=2, relief=GROOVE)
       
    17         self.panelframe.pack(expand=1, fill=BOTH)
       
    18         self.panels = {}
       
    19         self.curpanel = None
       
    20 
       
    21     def addpanel(self, name, klass):
       
    22         button = Button(self.buttonframe, text=name,
       
    23                         command=lambda self=self, name=name: self.show(name))
       
    24         button.pack(side=LEFT)
       
    25         frame = Frame(self.panelframe)
       
    26         instance = klass(frame)
       
    27         self.panels[name] = (button, frame, instance)
       
    28         if self.curpanel is None:
       
    29             self.show(name)
       
    30 
       
    31     def show(self, name):
       
    32         (button, frame, instance) = self.panels[name]
       
    33         if self.curpanel:
       
    34             self.curpanel.pack_forget()
       
    35         self.curpanel = frame
       
    36         frame.pack(expand=1, fill="both")
       
    37 
       
    38 class LabelPanel:
       
    39     def __init__(self, frame):
       
    40         self.label = Label(frame, text="Hello world")
       
    41         self.label.pack()
       
    42 
       
    43 class ButtonPanel:
       
    44     def __init__(self, frame):
       
    45         self.button = Button(frame, text="Press me")
       
    46         self.button.pack()
       
    47 
       
    48 def main():
       
    49     app = App()
       
    50     app.addpanel("label", LabelPanel)
       
    51     app.addpanel("button", ButtonPanel)
       
    52     app.top.mainloop()
       
    53 
       
    54 if __name__ == '__main__':
       
    55     main()