| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  | from Tkinter import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # some vocabulary to keep from getting confused. This terminology  | 
					
						
							|  |  |  | # is something I cooked up for this file, but follows the man pages  | 
					
						
							|  |  |  | # pretty closely | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | #       This is a MENUBUTTON | 
					
						
							|  |  |  | #       V | 
					
						
							|  |  |  | # +-------------+ | 
					
						
							|  |  |  | # |             | | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # +------------++------------++------------+ | 
					
						
							|  |  |  | # |            ||            ||            | | 
					
						
							|  |  |  | # |  File      ||  Edit      || Options    |   <-------- the MENUBAR | 
					
						
							|  |  |  | # |            ||            ||            | | 
					
						
							|  |  |  | # +------------++------------++------------+ | 
					
						
							|  |  |  | # | New...         | | 
					
						
							|  |  |  | # | Open...        | | 
					
						
							|  |  |  | # | Print          | | 
					
						
							| 
									
										
										
										
											1995-01-10 17:07:40 +00:00
										 |  |  | # |                |  <------ This is a MENU. The lines of text in the menu are | 
					
						
							|  |  |  | # |                |                          MENU ENTRIES | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  | # |                +---------------+ | 
					
						
							|  |  |  | # | Open Files >   | file1         |                | 
					
						
							|  |  |  | # |                | file2         | | 
					
						
							|  |  |  | # |                | another file  | <------ this cascading part is also a MENU | 
					
						
							|  |  |  | # +----------------|               | | 
					
						
							|  |  |  | #                  |               | | 
					
						
							|  |  |  | #                  |               | | 
					
						
							|  |  |  | #                  |               | | 
					
						
							|  |  |  | #                  +---------------+ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def new_file(): | 
					
						
							|  |  |  |     print "opening new file" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def open_file(): | 
					
						
							|  |  |  |     print "opening OLD file" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def makeFileMenu(): | 
					
						
							|  |  |  |     # make menu button : "File" | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     File_button = Menubutton(mBar, text='File', underline=0) | 
					
						
							|  |  |  |     File_button.pack(side=LEFT, padx="1m") | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |     File_button.menu = Menu(File_button) | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     # add an item. The first param is a menu entry type,  | 
					
						
							|  |  |  |     # must be one of: "cascade", "checkbutton", "command", "radiobutton", "seperator" | 
					
						
							|  |  |  |     # see menu-demo-2.py for examples of use | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     File_button.menu.add_command(label='New...', underline=0,  | 
					
						
							|  |  |  | 				 command=new_file) | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |      | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     File_button.menu.add_command(label='Open...', underline=0,  | 
					
						
							|  |  |  | 				 command=open_file) | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     File_button.menu.add_command(label='Quit', underline=0,  | 
					
						
							|  |  |  | 				 command='exit') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |     # set up a pointer from the file menubutton back to the file menu | 
					
						
							|  |  |  |     File_button['menu'] = File_button.menu | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return File_button | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def makeEditMenu(): | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     Edit_button = Menubutton(mBar, text='Edit', underline=0) | 
					
						
							|  |  |  |     Edit_button.pack(side=LEFT, padx="1m") | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |     Edit_button.menu = Menu(Edit_button) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # just to be cute, let's disable the undo option: | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     Edit_button.menu.add('command', label="Undo") | 
					
						
							| 
									
										
										
										
											1996-08-21 20:13:08 +00:00
										 |  |  |     # Since the tear-off bar is the 0th entry, | 
					
						
							|  |  |  |     # undo is the 1st entry... | 
					
						
							|  |  |  |     Edit_button.menu.entryconfig(1, state=DISABLED) | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # and these are just for show. No "command" callbacks attached. | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  |     Edit_button.menu.add_command(label="Cut") | 
					
						
							|  |  |  |     Edit_button.menu.add_command(label="Copy") | 
					
						
							|  |  |  |     Edit_button.menu.add_command(label="Paste") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  |     # set up a pointer from the file menubutton back to the file menu | 
					
						
							|  |  |  |     Edit_button['menu'] = Edit_button.menu | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return Edit_button | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ################################################# | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Main starts here ... | 
					
						
							|  |  |  | root = Tk() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # make a menu bar | 
					
						
							| 
									
										
										
										
											1996-07-30 18:57:18 +00:00
										 |  |  | mBar = Frame(root, relief=RAISED, borderwidth=2) | 
					
						
							|  |  |  | mBar.pack(fill=X) | 
					
						
							| 
									
										
										
										
											1994-10-07 09:55:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | File_button = makeFileMenu() | 
					
						
							|  |  |  | Edit_button = makeEditMenu() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # finally, install the buttons in the menu bar.  | 
					
						
							|  |  |  | # This allows for scanning from one menubutton to the next. | 
					
						
							|  |  |  | mBar.tk_menuBar(File_button, Edit_button) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | root.title('menu demo') | 
					
						
							|  |  |  | root.iconname('packer') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | root.mainloop() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 |