⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu-all-types-of-entries.py

📁 reduced python source for embedded apps
💻 PY
字号:
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# +----------------|               |#                  |               |#                  |               |#                  |               |#                  +---------------+# some miscellaneous callbacksdef new_file():    print "opening new file"def open_file():    print "opening OLD file"def print_something():    print "picked a menu item"anchovies = 0def print_anchovies():    global anchovies    anchovies = not anchovies    print "anchovies?", anchoviesdef makeCommandMenu():    # make menu button     Command_button = Menubutton(mBar, text='Simple Button Commands', 				underline=0)    Command_button.pack(side=LEFT, padx="2m")        # make the pulldown part of the File menu. The parameter passed is the master.    # we attach it to the button as a python attribute called "menu" by convention.    # hopefully this isn't too confusing...    Command_button.menu = Menu(Command_button)    # just to be cute, let's disable the undo option:    Command_button.menu.add_command(label="Undo")    # undo is the 0th entry...    Command_button.menu.entryconfig(0, state=DISABLED)    Command_button.menu.add_command(label='New...', underline=0, 				    command=new_file)    Command_button.menu.add_command(label='Open...', underline=0, 				    command=open_file)    Command_button.menu.add_command(label='Different Font', underline=0,				    font='-*-helvetica-*-r-*-*-*-180-*-*-*-*-*-*',				    command=print_something)        # we can make bitmaps be menu entries too. File format is X11 bitmap.    # if you use XV, save it under X11 bitmap format. duh-uh.,..    Command_button.menu.add_command(	bitmap="info")	#bitmap='@/home/mjc4y/dilbert/project.status.is.doomed.last.panel.bm')        # this is just a line    Command_button.menu.add('separator')    # change the color    Command_button.menu.add_command(label='Quit', underline=0, 				    background='red', 				    activebackground='green', 				    command=Command_button.quit)    # set up a pointer from the file menubutton back to the file menu    Command_button['menu'] = Command_button.menu    return Command_buttondef makeCascadeMenu():    # make menu button     Cascade_button = Menubutton(mBar, text='Cascading Menus', underline=0)    Cascade_button.pack(side=LEFT, padx="2m")        # the primary pulldown    Cascade_button.menu = Menu(Cascade_button)    # this is the menu that cascades from the primary pulldown....    Cascade_button.menu.choices = Menu(Cascade_button.menu)    # ...and this is a menu that cascades from that.    Cascade_button.menu.choices.wierdones = Menu(Cascade_button.menu.choices)    # then you define the menus from the deepest level on up.    Cascade_button.menu.choices.wierdones.add_command(label='avacado')    Cascade_button.menu.choices.wierdones.add_command(label='belgian endive')    Cascade_button.menu.choices.wierdones.add_command(label='beefaroni')    # definition of the menu one level up...    Cascade_button.menu.choices.add_command(label='Chocolate')    Cascade_button.menu.choices.add_command(label='Vanilla')    Cascade_button.menu.choices.add_command(label='TuttiFruiti')    Cascade_button.menu.choices.add_command(label='WopBopaLoopBapABopBamBoom')    Cascade_button.menu.choices.add_command(label='Rocky Road')    Cascade_button.menu.choices.add_command(label='BubbleGum')    Cascade_button.menu.choices.add_cascade(	label='Wierd Flavors', 	menu=Cascade_button.menu.choices.wierdones)    # and finally, the definition for the top level    Cascade_button.menu.add_cascade(label='more choices', 				    menu=Cascade_button.menu.choices)    Cascade_button['menu'] = Cascade_button.menu    return Cascade_buttondef makeCheckbuttonMenu():    global fred    # make menu button     Checkbutton_button = Menubutton(mBar, text='Checkbutton Menus', 				    underline=0)    Checkbutton_button.pack(side=LEFT, padx='2m')        # the primary pulldown    Checkbutton_button.menu = Menu(Checkbutton_button)    # and all the check buttons. Note that the "variable" "onvalue" and "offvalue" options    # are not supported correctly at present. You have to do all your application     # work through the calback.    Checkbutton_button.menu.add_checkbutton(label='Pepperoni')    Checkbutton_button.menu.add_checkbutton(label='Sausage')    Checkbutton_button.menu.add_checkbutton(label='Extra Cheese')    # so here's a callback    Checkbutton_button.menu.add_checkbutton(label='Anchovy', 					    command=print_anchovies)    # and start with anchovies selected to be on. Do this by     # calling invoke on this menu option. To refer to the "anchovy" menu    # entry we need to know it's index. To do this, we use the index method    # which takes arguments of several forms:     #    # argument        what it does    # -----------------------------------    # a number        -- this is useless.     # "last"          -- last option in the menu    # "none"          -- used with the activate command. see the man page on menus    # "active"        -- the currently active menu option. A menu option is made active    #                         with the 'activate' method    # "@number"       -- where 'number' is an integer and is treated like a y coordinate in pixels    # string pattern  -- this is the option used below, and attempts to match "labels" using the     #                    rules of Tcl_StringMatch    Checkbutton_button.menu.invoke(Checkbutton_button.menu.index('Anchovy'))    # set up a pointer from the file menubutton back to the file menu    Checkbutton_button['menu'] = Checkbutton_button.menu    return Checkbutton_buttondef makeRadiobuttonMenu():    # make menu button     Radiobutton_button = Menubutton(mBar, text='Radiobutton Menus', 				    underline=0)    Radiobutton_button.pack(side=LEFT, padx='2m')        # the primary pulldown    Radiobutton_button.menu = Menu(Radiobutton_button)    # and all the Radio buttons. Note that the "variable" "onvalue" and "offvalue" options    # are not supported correctly at present. You have to do all your application     # work through the calback.    Radiobutton_button.menu.add_radiobutton(label='Republican')    Radiobutton_button.menu.add_radiobutton(label='Democrat')    Radiobutton_button.menu.add_radiobutton(label='Libertarian')    Radiobutton_button.menu.add_radiobutton(label='Commie')    Radiobutton_button.menu.add_radiobutton(label='Facist')    Radiobutton_button.menu.add_radiobutton(label='Labor Party')    Radiobutton_button.menu.add_radiobutton(label='Torie')    Radiobutton_button.menu.add_radiobutton(label='Independent')    Radiobutton_button.menu.add_radiobutton(label='Anarchist')    Radiobutton_button.menu.add_radiobutton(label='No Opinion')    # set up a pointer from the file menubutton back to the file menu    Radiobutton_button['menu'] = Radiobutton_button.menu    return Radiobutton_buttondef makeDisabledMenu():     Dummy_button = Menubutton(mBar, text='Dead Menu', underline=0)    Dummy_button.pack(side=LEFT, padx='2m')    # this is the standard way of turning off a whole menu    Dummy_button["state"] = DISABLED    return Dummy_button##################################################### Main starts here ...root = Tk()# make a menu barmBar = Frame(root, relief=RAISED, borderwidth=2)mBar.pack(fill=X)Command_button     = makeCommandMenu()Cascade_button     = makeCascadeMenu()Checkbutton_button = makeCheckbuttonMenu()Radiobutton_button = makeRadiobuttonMenu()NoMenu             = makeDisabledMenu()# finally, install the buttons in the menu bar. # This allows for scanning from one menubutton to the next.mBar.tk_menuBar(Command_button, Cascade_button, Checkbutton_button, Radiobutton_button, NoMenu)root.title('menu demo')root.iconname('menu demo')root.mainloop()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -