Menu
这个小部件的目标是允许我们创建可供我们的应用程序使用的各种菜单。 核心功能提供了创建三种菜单类型的方法:弹出,顶层和下拉。
还可以使用其他扩展小部件来实现新类型的菜单,例如OptionMenu小部件,该小部件实现一种特殊类型,该类型生成选择内的项目的弹出列表。
语法 (Syntax)
以下是创建此小部件的简单语法 -
w = Menu ( master, option, ... )
参数 (Parameters)
master - 这表示父窗口。
options - 以下是此小部件最常用的选项列表。 这些选项可用作以逗号分隔的键值对。
Sr.No. | 描述 |
---|---|
1 | activebackground 当鼠标在鼠标下时,将出现的背景颜色。 |
2 | activeborderwidth 指定当选项位于鼠标下方时围绕选区绘制的边框的宽度。 默认值为1像素。 |
3 | activeforeground 在鼠标下方选择时出现的前景色。 |
4 | bg 不在鼠标下的选项的背景颜色。 |
5 | bd 所有选择周围的边框宽度。 默认值为1。 |
6 | cursor 鼠标悬停在选项上时出现的光标,但仅在菜单被撕下时显示。 |
7 | disabledforeground 状态为DISABLED的项目的文本颜色。 |
8 | font 文本选择的默认字体。 |
9 | fg 用于不在鼠标下的选择的前景色。 |
10 | postcommand 您可以将此选项设置为过程,并且每次有人调出此菜单时都会调用该过程。 |
11 | relief 菜单的默认三维效果是缓解= RAISED。 |
12 | image 在此menubutton上显示图像。 |
13 | selectcolor 指定选中时在复选框和单选按钮中显示的颜色。 |
14 | tearoff 通常,菜单可以被撕掉,选项列表中的第一个位置(位置0)被撕下元素占用,并且从位置1开始添加附加选项。如果设置tearoff = 0,则菜单没有撕下功能,将从0位开始添加选项。 |
15 | title 通常,撕下菜单窗口的标题将与导致此菜单的menubutton或级联的文本相同。 如果要更改该窗口的标题,请将title选项设置为该字符串。 |
方法 (Methods)
Menu对象上提供了这些方法 -
Sr.No. | 选项和说明 |
---|---|
1 | add_command (options) 将菜单项添加到菜单中。 |
2 | add_radiobutton( options ) 创建单选按钮菜单项。 |
3 | add_checkbutton( options ) 创建一个复选按钮菜单项。 |
4 | add_cascade(options) 通过将给定菜单与父菜单相关联来创建新的分层菜单 |
5 | add_separator() 在菜单中添加分隔线。 |
6 | add( type, options ) 将特定类型的菜单项添加到菜单中。 |
7 | delete( startindex [, endindex ]) 删除从startindex到endindex的菜单项。 |
8 | entryconfig( index, options ) 允许您修改由索引标识的菜单项,并更改其选项。 |
9 | index(item) 返回给定菜单项标签的索引号。 |
10 | insert_separator ( index ) 在index指定的位置插入新的分隔符。 |
11 | invoke ( index ) 调用与位置索引处的选择关联的命令回调。 如果是一个checkbutton,它的状态在set和clear之间切换; 如果是radiobutton,则设置该选项。 |
12 | type ( index ) 返回index指定的选择类型:“cascade”,“checkbutton”,“command”,“radiobutton”,“separator”或“tearoff”。 |
例子 (Example)
请亲自尝试以下示例 -
from Tkinter import *
def donothing():
filewin = Toplevel(root)
button = Button(filewin, text="Do nothing button")
button.pack()
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=donothing)
editmenu.add_separator()
editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)
root.config(menu=menubar)
root.mainloop()
执行上述代码时,会产生以下结果 -