mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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          |
 | 
						|
# |                |  <------ This is a MENU. The lines of text in the menu are
 | 
						|
# |                |                          MENU ENTRIES
 | 
						|
# |                +---------------+
 | 
						|
# | 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"
 | 
						|
    File_button = Menubutton(mBar, text='File', underline=0)
 | 
						|
    File_button.pack(side=LEFT, padx="1m")
 | 
						|
    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", "separator"
 | 
						|
    # see menu-demo-2.py for examples of use
 | 
						|
    File_button.menu.add_command(label='New...', underline=0,
 | 
						|
                                 command=new_file)
 | 
						|
 | 
						|
 | 
						|
    File_button.menu.add_command(label='Open...', underline=0,
 | 
						|
                                 command=open_file)
 | 
						|
 | 
						|
    File_button.menu.add_command(label='Quit', underline=0,
 | 
						|
                                 command='exit')
 | 
						|
 | 
						|
    # set up a pointer from the file menubutton back to the file menu
 | 
						|
    File_button['menu'] = File_button.menu
 | 
						|
 | 
						|
    return File_button
 | 
						|
 | 
						|
 | 
						|
 | 
						|
def makeEditMenu():
 | 
						|
    Edit_button = Menubutton(mBar, text='Edit', underline=0)
 | 
						|
    Edit_button.pack(side=LEFT, padx="1m")
 | 
						|
    Edit_button.menu = Menu(Edit_button)
 | 
						|
 | 
						|
    # just to be cute, let's disable the undo option:
 | 
						|
    Edit_button.menu.add('command', label="Undo")
 | 
						|
    # Since the tear-off bar is the 0th entry,
 | 
						|
    # undo is the 1st entry...
 | 
						|
    Edit_button.menu.entryconfig(1, state=DISABLED)
 | 
						|
 | 
						|
    # and these are just for show. No "command" callbacks attached.
 | 
						|
    Edit_button.menu.add_command(label="Cut")
 | 
						|
    Edit_button.menu.add_command(label="Copy")
 | 
						|
    Edit_button.menu.add_command(label="Paste")
 | 
						|
 | 
						|
    # 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
 | 
						|
mBar = Frame(root, relief=RAISED, borderwidth=2)
 | 
						|
mBar.pack(fill=X)
 | 
						|
 | 
						|
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()
 |