diff options
Diffstat (limited to 'Demo/tkinter/matt/menu-simple.py')
-rw-r--r-- | Demo/tkinter/matt/menu-simple.py | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/Demo/tkinter/matt/menu-simple.py b/Demo/tkinter/matt/menu-simple.py new file mode 100644 index 0000000..a1fc2fb --- /dev/null +++ b/Demo/tkinter/matt/menu-simple.py @@ -0,0 +1,132 @@ +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, + Pack: {'side': 'left', + 'padx': '1m'}}) + + # make the pulldown part of the File menu. The parameter passed is the master. + # we attach it to the File button as a python attribute called "menu" by convention. + # hopefully this isn't too confusing... + 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 + 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, + 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"} ) + # undo is the 0th entry... + Edit_button.menu.entryconfig(0, {"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', + 'bd': 2, + Pack: {'side': 'top', + '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() + + + + + + |