【tkinter组件专栏】Menubutton:会飞雷神之术的菜单按钮

时间:2024-10-23 08:37:08

在这里插入图片描述

文章目录

  • 一、组件简介
  • 二、运用实例
    • 1. Menubutton基操
    • 2. 思考:用武之处
  • 三、参数方法
    • 1. 参数汇总


一、组件简介

Menubutton 组件,菜单按钮,它是一个与Menu组件息息相关的组件,按钮可以被放在窗口屏幕上的任意地方,并在被按下时弹出下拉菜单

在这里插入图片描述
也就是说通过Menubutton,我们可以实现菜单在窗口任意位置出现,而不再局限于顶部的菜单栏。

在这里插入图片描述

二、运用实例

——

1. Menubutton基操

首先,我们来简单了解一下Menubutton Menu组件的配合使用

import tkinter as tk 

root = tk.Tk()
root.geometry('200x200')

def show():
	print('执行中...')

# 创建一个菜单按钮
mb = tk.Menubutton(root, text='编辑', relief='raised')
mb.pack(padx=10,pady=10)

# 创建一个菜单实例
editmenu = tk.Menu(mb, tearoff=False)
editmenu.add_command(label='复制', command=show)
editmenu.add_command(label='剪切', command=show)
editmenu.add_command(label='粘贴', command=show)
editmenu.add_separator()     # 添加分割线
editmenu.add_command(label='撤销', command=show)

# 菜单按钮设置菜单显示
mb.config(menu=editmenu)

root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行程序,看看实际的效果。

在这里插入图片描述

——

2. 思考:用武之处

正如我们开始所说,Menubutton的作用就是能够让菜单出现在窗口上的任意位置。

其实在早期的tkinter中,Menubutton组件是用来实现*菜单的,但是自从Menu诞生之后,也基本上很少有机会使用它了。

那么我们不仅要思考,在哪些情况下适合使用Menubutton组件?我们是否需要某个菜单出现在窗口特定位置,对用户更加方便?如果是常用的一些功能,用弹出菜单代替是不是更好?

在了解这个组件的时候,我确实在思考这些问题,发现真正可能会用到Menubutton组件的场合真的不多。

当然,大佬们如果有好的想法,也恳请赐教,指点指点。

在这里插入图片描述
在这里插入图片描述

三、参数方法

——

1. 参数汇总

最后罗列一下Menubutton组件常用的参数以及用法。

参数 用法
activebackground 设置当 Menubutton 处于活动状态(通过 state 选项设置状态)的背景色
activeforeground 设置当 Menubutton 处于活动状态(通过 state 选项设置状态)的前景色
anchor 1. 控制文本(或图像)在 Menubutton 中显示的位置; 2. N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东);3. 默认值是 CENTER
background(bg) 设置背景颜色
bitmap 指定显示到 Menubutton 上的位图
borderwidth(bd) 指定 Menubutton 的边框宽度
compound 1. 控制 Menubutton 中文本和图像的混合模式 ;2. 如果该选项设置为 CENTER,文本显示在图像上(文本重叠图像);3. 如果该选项设置为 BOTTOM,LEFT,RIGHT 或 TOP,那么图像显示在文本的旁边(如 BOTTOM,则图像在文本的下方) ;4. 默认值是 NONE
cursor 指定当鼠标在 Menubutton 上飘过的时候的鼠标样式
direction 1. 默认情况下菜单是显示在按钮的下方,你可以通过修改此选项来改变这一特征 ;2. 你可以将该选项设置为 “left”(按钮的左边),“right”(按钮的右边),“above”(按钮的上方)
disabledforeground 指定当 Menubutton 不可用的时候前景色的颜色
font 指定 Menubutton 中文本的字体
foreground(fg) 设置 Menubutton 的文本和位图的颜色
height 1. 设置 Menubutton 的高度; 2. 如果 Menubutton 显示的是文本,那么单位是文本单元 ;3. 如果 Menubutton 显示的是图像,那么单位是像素(或屏幕单元);4. 如果设置为 0 或者干脆不设置,那么会自动根据 Menubutton 的内容计算出高度
highlightbackground 指定当 Menubutton 没有获得焦点的时候高亮边框的颜色
highlightcolor 指定当 Menubutton 获得焦点的时候高亮边框的颜色
highlightthickness 指定高亮边框的宽度
image 1. 指定 Menubutton 显示的图片;2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象
justify 1. 定义如何对齐多行文本 ;2. 使用 LEFT,RIGHT 或 CENTER;3. 注意,文本的位置取决于 anchor 选项 ;4. 默认值是 CENTER
menu 1. 指定与 Menubutton 相关联的 Menu 组件 ;2. Menu 组件的第一个参数必须是 Menubutton 的实例(参考上边例子)
padx 指定 Menubutton 水平方向上的额外间距(内容和边框间)
pady 指定 Menubutton 垂直方向上的额外间距(内容和边框间)
relief 1. 指定边框样式;2. 默认值是 FLAT;3. 可以设置为 SUNKEN,RAISED,GROOVE,RIDGE
state 1. 指定 Menubutton 的状态 ;2. 默认值是 NORMAL;3. 另外你还可以设置 ACTIVE 或 DISABLED
takefocus 指定使用 Tab 键可以将焦点移到该 Button 组件上(这样按下空格键也相当于触发按钮事件)
text 1. 指定 Menubutton 显示的文本;2. 文本可以包含换行符
textvariable 1. Menubutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容;2. 如果变量被修改,Menubutton 的文本会自动更新
underline 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键);2. 默认值是 -1;3. 例如设置为 1,则说明在 Menubutton 的第 2 个字符处画下划线
width 1. 设置 Menubutton 的宽度;2. 如果 Menubutton 显示的是文本,那么单位是文本单元;3. 如果 Menubutton 显示的是图像,那么单位是像素(或屏幕单元);4. 如果设置为 0 或者干脆不设置,那么会自动根据 Menubutton 的内容计算出宽度
wraplength 1. 决定 Menubutton 的文本应该被分成多少行 ;2. 该选项指定每行的长度,单位是屏幕单元;3. 默认值是 0

在这里插入图片描述在这里插入图片描述