Tkinter 菜单
该小部件的目标是允许我们创建各种可以被我们的应用程序使用的菜单。核心功能提供了创建三种菜单类型的方法:弹出、顶级和下拉。
还可以使用其他扩展小部件来实现新类型的菜单,比如 OptionMenu 小部件,它实现了一种特殊类型,在选择中生成一个弹出的项目列表。
语法
这是创建该小部件的简单语法-
w = Menu ( master, option, ... )
参数
- master − :表示父窗口。
-
options − 这是此小部件的常用选项列表。这些选项可以使用逗号分隔的键值对的形式使用。
序号 | 选项和描述 |
---|---|
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 菜单的默认3D效果为relief=RAISED。 |
12 | Image 在此菜单按钮上显示图像。 |
13 | Selectcolor 当选择了复选框和单选按钮时显示的颜色。 |
14 | Tearoff 通常情况下,菜单可以被拆分,选择列表中的第一个位置(位置0)被拆分元素占用,而其他选择从位置1开始添加。如果设置tearoff=0,则菜单将没有拆分功能,选择将从位置0开始添加。 |
15 | Title 通常,撕开菜单窗口的标题与导致该菜单的菜单按钮或级联的文本相同。如果要更改该窗口的标题,请将标题选项设置为该字符串。 |
方法
这些方法可在菜单对象上使用−
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 ) 在指定索引位置插入新的分隔线。 |
11 | invoke ( index ) 调用与位置索引处的选项关联的命令回调函数。如果是复选框,则其状态在选中和取消之间切换;如果是单选按钮,则设置该选项。 |
12 | type ( index ) 返回由索引指定的选项的类型:”cascade”、”checkbutton”、”command”、”radiobutton”、”separator”或”tearoff”。 |
示例
请尝试下面的例子自己来完成−
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()
当以上代码被执行时,它会产生以下结果−