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

通常情况下,弹出式菜单窗口的标题与指向该菜单的菜单按钮或级联菜单的文本相同。如果要更改窗口标题,请将title选项设置为该字符串。

方法

这些方法适用于Menu对象:

序号 选项 & 说明
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()

执行上述代码后,将产生以下结果:

tkinter menu
python_gui_programming.htm
广告