Python 3 – 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 - 菜单的默认三维效果为relief = RAISED。 |
12 | image - 在此菜单按钮上显示图像。 |
13 | selectcolor - 选择后显示的复选框和单选按钮的颜色。 |
14 | tearoff - 通常情况下,菜单可以被撕下,选择列表中的第一个位置(位置0)被撕下的元素占用,并从位置1开始添加其他选择。如果设置tearoff = 0,则该菜单将没有撕下功能,并且选择将从位置0开始添加。 |
15 | title - 通常,撕下菜单窗口的标题将与导致该菜单的menubutton或cascade的文本相同。如果您想更改该窗口的标题,将标题选项设置为该字符串。 |
方法
在菜单对象上可以使用这些方法 –
序号 | 选项及描述 |
---|---|
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) 调用与位置index处的选项相关联的命令回调函数。如果是复选框,则其状态在设置和清除之间切换;如果是单选框,则选择该选项。 |
12 | type(index) 返回由索引指定的选择的类型:”cascade”,”checkbutton”,”command”,”radiobutton”,”separator”或”tearoff”。 |
示例
尝试自己运行以下示例 –
# !/usr/bin/python3
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()
结果
当执行以上代码时,它会产生以下结果 –