tkinter库 -- 菜单Menu

这篇博客介绍了Python的tkinter库如何创建和使用菜单组件Menu,包括主菜单和上下文菜单的定义,详细讲解了创建语法、常用属性、方法,以及提供了具体的代码示例和综合应用案例,展示了如何构建一个功能丰富的GUI菜单系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GUI界面设计 – tkinter库应用 – 菜单组件Menu



前言

学习tkinter库的一些心得体会,以及常用案例


一、Menu菜单组件

图形用户界面应用程序通常提供菜单,菜单包含各种按照主题分组的基本命令。图形用户界面应用程序包括2种类型的菜单。

  • 主菜单:提供窗体的菜单系统。通过单击可下拉出子菜单,选择命令可执行相关的操作。常用的主菜单通常包括:文件、编辑、视图、帮助等。
  • 上下文菜单(也称为快捷菜单):通过鼠标右击某对象而弹出的菜单,一般为与该对象相关的常用菜单命令。例如:剪切、复制、粘贴等。

二、语法

1.创建语法

menu = Menu(master, options,...)
  • master: 框架的父容器。
  • options: 可选项,即该菜单的可设置的属性。这些选项可以用键-值的形式设置,并以逗号分隔。

2.常用属性

序号 属性名称 描述
1 activebackground 设置当 Menu 处于 “active” 状态(通过 state 选项设置状态)的背景色
2 activeborderwidth 设置当 Menu 处于 “active” 状态(通过 state 选项设置状态)的边框宽度
3 activeforeground 设置当 Menu 处于 “active” 状态(通过 state 选项设置状态)的前景色
4 background 设置背景颜色
5 bg 跟 background 一样
6 borderwidth 指定边框宽度
7 bd 跟 borderwidth 一样
8 cursor 指定当鼠标在 Menu 上飘过的时候的鼠标样式
9 disabledforeground 指定当 Menu 处于 “disabled” 状态的时候的前景色
10 font 指定 Menu 中文本的字体
11 foreground 设置 Menu 的前景色
12 fg 跟 foreground 一样
13 postcommand 将此选项与一个方法相关联,当菜单被打开的时候该方法将自动被调用
14 relief 1. 指定边框样式 2. 默认值是 “flat” 3. 另外你还可以设置 “sunken”,“raised”,“groove” 或 “ridge”
15 selectcolor 指定当菜单项显示为单选按钮或多选按钮时选择中标志的颜色
16 tearoff 1. 默认情况下菜单可以被“撕下”(点击 IDLE 菜单上边的 --------- 试试)2. 将该选项设置为 Flase 关闭这一特性
17 tearoffcommand 如果你希望当用户“撕下”你的菜单时通知你的程序,那么你可以将该选项与一个方法相关联,那么当用户“撕下”你的菜单时,Tkinter 会带着两个参数去调用你的方法(一个参数是当前窗口的 ID,另一个参数是承载被“撕下”的菜单的窗口 ID)
18 title 默认情况下,被“撕下”的菜单标题是其主菜单的名字,不过你也可以通过修改此项的值来修改标题

3.方法

add(type, **options)

– type 参数指定添加的菜单类型,可以是:“command”,“cascade”,“checkbutton”,“radiobutton” 或 “separator”
– 还可以通过 options 选项设置菜单的属性,下表列举了 options 可以使用的选项和具体含义:

add_cascade(**options)

– 添加一个父菜单
– 相当于 add(“cascade”, **options)

add_checkbutton(**options)

– 添加一个多选按钮的菜单项
– 相当于 add(“checkbutton”, **options)

add_command(**options)

– 添加一个普通的命令菜单项
– 相当于 add(“command”, **options)

add_radiobutton(**options)

– 添加一个单选按钮的菜单项
– 相当于 add(“radiobutton”, **options)

add_separator(**options)

– 添加一条分割线
– 相当于 add(“separator”, **options)

delete(index1, index2=None)

– 删除 index1 ~ index2(包含)的所有菜单项
– 如果忽略 index2 参数,则删除 index1 指向的菜单项
– 注意:对于一个被“撕下”的菜单,你无法使用该方法

entrycget(index, option)

– 获得指定菜单项的某选项的值

entryconfig(index, **options)

– 设置指定菜单项的选项
– 选项的参数及具体含义请参考上方 add() 方法

entryconfigure(index, **options)

– 跟 entryconfig() 一样

index(index)

– 返回与 index 参数相应的选项的序号(例如 e.index(“end”))

insert(index, itemType, **options)

– 插入指定类型的菜单项到 index 参数指定的位置
– itemType 参数指定添加的菜单类型,可以是:“command”,“cascade”,“checkbutton”,“radiobutton” 或 “separator”
– 选项的参数及具体含义请参考上方 add() 方法

insert_cascade(index, **options)

– 在 index 参数指定的位置添加一个父菜单
– 相当于 insert(“cascade”, **options)

insert_checkbutton(index, **options)

– 在 index 参数指定的位置添加一个多选按钮
– 相当于 insert(“checkbutton”, **options)

insert_command(index, **options)

– 在 index 参数指定的位置添加一个普通的命令菜单项
– 相当于 insert(“command”, **options)

insert_radiobutton(index, **options)

– 在 index 参数指定的位置添加一个单选按钮
– 相当于 insert(“radiobutton”, **options)

insert_separator(index, **options)

– 在 index 参数指定的位置添加一条分割线
– 相当于 insert(“separator”, **options)

invoke(index)

– 调用 index 指定的菜单项相关联的方法
– 如果是单选按钮,设置该菜单项为选中状态
– 如果是多选按钮,切换该菜单项的选中状态

post(x, y)

– 在指定的位置显示弹出菜单
– 绑定鼠标右键点击事件

type(index)

– 获得 index 参数指定菜单项的类型
– 返回值可以是:“command”,“cascade”,“checkbutton”,“radiobutton” 或 “separator”

unpost()

– 移除弹出菜单

yposition(index)

– 返回 index 参数指定的菜单项的垂直偏移位置
– 该方法的目的是为了让你精确放置相对于当前鼠标的位置弹出菜单

4.菜单示例

在这里插入图片描述

代码如下(示例):

from tkinter import *
from tkinter.filedialog import *
from tkinter import messagebox as msgbox

root = Tk()
root.title('菜单综合练习')
m = Menu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值