Tkinter 教程-Python Tkinter 菜单
菜单小部件用于在 Python 应用程序中创建各种类型的菜单(顶级、下拉和弹出)。
顶级菜单是显示在父窗口标题栏下方的菜单。我们需要创建一个 Menu 小部件的新实例,并使用 add() 方法向其添加各种命令。
使用 Menu 小部件的语法如下。
语法
w = Menu(top, options)
以下是可能的选项列表。
序号 | 选项 | 描述 |
---|---|---|
1 | activebackground | 小部件在焦点下时的背景颜色。 |
2 | activeborderwidth | 鼠标悬停在小部件上时小部件边框的宽度。默认为 1 像素。 |
3 | activeforeground | 小部件在焦点时的字体颜色。 |
4 | bg | 小部件的背景颜色。 |
5 | bd | 小部件的边框宽度。 |
6 | cursor | 当鼠标悬停在小部件上时,鼠标指针更改为箭头或点的光标类型。 |
7 | disabledforeground | 小部件被禁用时的字体颜色。 |
8 | font | 小部件文本的字体类型。 |
9 | fg | 小部件的前景颜色。 |
10 | postcommand | postcommand 可以设置为鼠标悬停在菜单上时调用的任何函数。 |
11 | relief | 小部件边框的类型。默认类型为 RAISED。 |
12 | image | 用于在菜单上显示图像。 |
13 | selectcolor | 当选中复选框或单选按钮时使用的颜色。 |
14 | tearoff | 默认情况下,菜单中的选项从位置 1 开始占据。如果我们将 tearoff 设置为 1,则它将从第 0 个位置开始占据。 |
15 | title | 如果要更改窗口标题,请将此选项设置为窗口的标题。 |
方法
Menu 小部件包含以下方法。
序号 | 选项 | 描述 |
---|---|---|
1 | add_command(options) | 用于将菜单项添加到菜单中。 |
2 | add_radiobutton(options) | 此方法将单选按钮添加到菜单中。 |
3 | add_checkbutton(options) | 此方法用于向菜单中添加复选按钮。 |
4 | add_cascade(options) | 通过将给定菜单关联到父菜单,用于在父菜单中创建分层菜单。 |
5 | add_seperator() | 用于向菜单中添加分隔线。 |
6 | add(type, options) | 用于向菜单中添加特定菜单项。 |
7 | delete(startindex, endindex) | 用于删除指定范围内存在的菜单项。 |
8 | entryconfig(index, options) | 用于配置由给定索引标识的菜单项。 |
9 | index(item) | 用于获取指定菜单项的索引。 |
10 | insert_seperator(index) | 用于在指定索引处插入分隔线。 |
11 | invoke(index) | 用于调用指定索引处给定选项相关联的函数。 |
12 | type(index) | 用于获取由索引指定的选项的类型。 |
创建顶级菜单
可以通过实例化 Menu 小部件并向菜单添加菜单项来创建顶级菜单。
示例 1
# !/usr/bin/python3
from tkinter import *
top = Tk()
def hello():
print("hello!")
# create a toplevel menu
menubar = Menu(root)
menubar.add_command(label="Hello!", command=hello)
menubar.add_command(label="Quit!", command=top.quit)
# display the menu
top.config(menu=menubar)
top.mainloop()
输出:
单击 "Hello!" 菜单按钮将在控制台上打印 "hello",而单击 "Quit!" 菜单按钮将从 Python 应用程序中退出。
示例 2
from tkinter import Toplevel, Button, Tk, Menu
top = Tk()
menubar = Menu(top)
file = Menu(menubar, tearoff=0)
file.add_command(label="New")
file.add_command(label="Open")
file.add_command(label="Save")
file.add_command(label="Save as...")
file.add_command(label="Close")
file.add_separator()
file.add_command(label="Exit", command=top.quit)
menubar.add_cascade(label="File", menu=file)
edit = Menu(menubar, tearoff=0)
edit.add_command(label="Undo")
edit.add_separator()
edit.add_command(label="Cut")
edit.add_command(label="Copy")
edit.add_command(label="Paste")
edit.add_command(label="Delete")
edit.add_command(label="Select All")
menubar.add_cascade(label="Edit", menu=edit)
help = Menu(menubar, tearoff=0)
help.add_command(label="About")
menubar.add_cascade(label="Help", menu=help)
top.config(menu=menubar)
top.mainloop()
输出: