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()
参数
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 |