Menubutton 组件是一个与 Menu 组件相关联的按钮,它可以放在窗口中的任意位置,并且在被按下时弹出下拉菜单。

何时使用 Menubutton 组件?

在 Tkinter 的早期版本,Menubutton 组件主要是用于实现顶级菜单,但现在我们直接用 Menu 组件就可以实现了。因此,现在该组件适用于你希望菜单按钮出现在其他位置的时候。

用法

创建一个 Menubutton 组件,并创建一个 Menu 组件与之相关联:

import tkinter as tk

root = tk.Tk()

def callback():
    print("~被调用了~")

mb = tk.Menubutton(root, text="点我", relief="raised")
mb.pack()

filemenu = tk.Menu(mb, tearoff=False)
filemenu.add_checkbutton(label="打开", command=callback, selectcolor="yellow")
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
mb.config(menu = filemenu)

root.mainloop()

python中tkinter中button中为什么要有root tkinter button command_Menubutton

参数

Menubutton(master=None, **options) (class)

master -- 父组件

**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:

选项

含义

activebackground

设置当 Menubutton 处于 "active" 状态(通过 state 选项设置状态)的背景色

activeforeground

设置当 Menubutton 处于 "active" 状态(通过 state 选项设置状态)的前景色

anchor

1. 控制文本(或图像)在 Menubutton 中显示的位置

2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或 "center" 来定位(ewsn代表东西南北,上北下南左西右东)

3. 默认值是 "center"

background

设置背景颜色

bg

跟 background 一样

bitmap

指定显示到 Menubutton 上的位图

borderwidth

指定 Menubutton 的边框宽度

bd

跟 borderwidth 一样

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

设置 Menubutton 的文本和位图的颜色

fg

跟 foreground 一样

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