Tkinter 组件详解(十四):Menubutton

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 选项设置状态)的前景色
anchor1. 控制文本(或图像)在 Menubutton 中显示的位置
2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或 "center" 来定位(ewsn代表东西南北,上北下南左西右东)
3. 默认值是 "center"
background设置背景颜色
bg跟 background 一样
bitmap指定显示到 Menubutton 上的位图
borderwidth指定 Menubutton 的边框宽度
bd跟 borderwidth 一样
compound1. 控制 Menubutton 中文本和图像的混合模式
2. 如果该选项设置为 "center",文本显示在图像上(文本重叠图像)
3. 如果该选项设置为 "bottom","left","right" 或 "top",那么图像显示在文本的旁边(如 "bottom",则图像在文本的下方)
4. 默认值是 NONE
cursor指定当鼠标在 Menubutton 上飘过的时候的鼠标样式
direction1. 默认情况下菜单是显示在按钮的下方,你可以通过修改此选项来改变这一特征
2. 你可以将该选项设置为 "left"(按钮的左边),"right"(按钮的右边),"above"(按钮的上方)
disabledforeground指定当 Menubutton 不可用的时候前景色的颜色
font指定 Menubutton 中文本的字体
foreground设置 Menubutton 的文本和位图的颜色
fg跟 foreground 一样
height1. 设置 Menubutton 的高度
2. 如果 Menubutton 显示的是文本,那么单位是文本单元
3. 如果 Menubutton 显示的是图像,那么单位是像素(或屏幕单元)
4. 如果设置为 0 或者干脆不设置,那么会自动根据 Menubutton 的内容计算出高度
highlightbackground指定当 Menubutton 没有获得焦点的时候高亮边框的颜色
highlightcolor指定当 Menubutton 获得焦点的时候高亮边框的颜色
highlightthickness指定高亮边框的宽度
image1. 指定 Menubutton 显示的图片
2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象
justify1. 定义如何对齐多行文本
2. 使用 "left","right" 或 "center"
3. 注意,文本的位置取决于 anchor 选项
4. 默认值是 "center"
menu1. 指定与 Menubutton 相关联的 Menu 组件
2. Menu 组件的第一个参数必须是 Menubutton 的实例(参考上边例子)
padx指定 Menubutton 水平方向上的额外间距(内容和边框间)
pady指定 Menubutton 垂直方向上的额外间距(内容和边框间)
relief1. 指定边框样式
2. 默认值是 "flat"
3. 可以设置为 "sunken","raised","groove","ridge"
state1. 指定 Menubutton 的状态
2. 默认值是 "normal"
3. 另外你还可以设置 "active" 或 "disabled"
takefocus指定使用 Tab 键可以将焦点移到该 Button 组件上(这样按下空格键也相当于触发按钮事件)
text1. 指定 Menubutton 显示的文本
2. 文本可以包含换行符
textvariable1. Menubutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容
2. 如果变量被修改,Menubutton 的文本会自动更新
underline1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 
2. 默认值是 -1
3. 例如设置为 1,则说明在 Menubutton 的第 2 个字符处画下划线
width1. 设置 Menubutton 的宽度
2. 如果 Menubutton 显示的是文本,那么单位是文本单元
3. 如果 Menubutton 显示的是图像,那么单位是像素(或屏幕单元)
4. 如果设置为 0 或者干脆不设置,那么会自动根据 Menubutton 的内容计算出宽度
wraplength1. 决定 Menubutton 的文本应该被分成多少行
2. 该选项指定每行的长度,单位是屏幕单元
3. 默认值是 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值