| 
									
										
										
										
											1998-07-15 14:58:05 +00:00
										 |  |  | # Show how to do switchable panels. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from Tkinter import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class App: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, top=None, master=None): | 
					
						
							|  |  |  |         if top is None: | 
					
						
							|  |  |  |             if master is None: | 
					
						
							|  |  |  |                 top = Tk() | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 top = Toplevel(master) | 
					
						
							|  |  |  |         self.top = top | 
					
						
							|  |  |  |         self.buttonframe = Frame(top) | 
					
						
							|  |  |  |         self.buttonframe.pack() | 
					
						
							|  |  |  |         self.panelframe = Frame(top,  borderwidth=2, relief=GROOVE) | 
					
						
							|  |  |  |         self.panelframe.pack(expand=1, fill=BOTH) | 
					
						
							|  |  |  |         self.panels = {} | 
					
						
							|  |  |  |         self.curpanel = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def addpanel(self, name, klass): | 
					
						
							|  |  |  |         button = Button(self.buttonframe, text=name, | 
					
						
							|  |  |  |                         command=lambda self=self, name=name: self.show(name)) | 
					
						
							|  |  |  |         button.pack(side=LEFT) | 
					
						
							|  |  |  |         frame = Frame(self.panelframe) | 
					
						
							|  |  |  |         instance = klass(frame) | 
					
						
							|  |  |  |         self.panels[name] = (button, frame, instance) | 
					
						
							|  |  |  |         if self.curpanel is None: | 
					
						
							|  |  |  |             self.show(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def show(self, name): | 
					
						
							|  |  |  |         (button, frame, instance) = self.panels[name] | 
					
						
							|  |  |  |         if self.curpanel: | 
					
						
							|  |  |  |             self.curpanel.pack_forget() | 
					
						
							|  |  |  |         self.curpanel = frame | 
					
						
							|  |  |  |         frame.pack(expand=1, fill="both") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LabelPanel: | 
					
						
							|  |  |  |     def __init__(self, frame): | 
					
						
							|  |  |  |         self.label = Label(frame, text="Hello world") | 
					
						
							|  |  |  |         self.label.pack() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ButtonPanel: | 
					
						
							|  |  |  |     def __init__(self, frame): | 
					
						
							|  |  |  |         self.button = Button(frame, text="Press me") | 
					
						
							|  |  |  |         self.button.pack() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							|  |  |  |     app = App() | 
					
						
							|  |  |  |     app.addpanel("label", LabelPanel) | 
					
						
							|  |  |  |     app.addpanel("button", ButtonPanel) | 
					
						
							| 
									
										
										
										
											1998-09-14 17:52:29 +00:00
										 |  |  |     app.top.mainloop() | 
					
						
							| 
									
										
										
										
											1998-07-15 14:58:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     main() |