tkinter 17 MenuButton

Reference

简介

Menubutton 组件是一个与 Menu 组件相关联的按钮,它可以放在窗口中的任意位置,并且在被按下时弹出下拉菜单。注意,这是一个过时了的控件,从Tk8.0开始将不再使用这个控件,取而代之的是Menu。如果希望菜单按钮出现在其他位置的时候,可以用OptionMenu来实现

例子

'''1.介绍一下Menubutton的常用 方法,可以看到与Menu的使用方法基本相同。'''
from tkinter import *
root = Tk()
mbLang = Menubutton(root,text = 'Language')

mbLang.menu = Menu(mbLang)
#生成菜单项
for item in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
    mbLang.menu.add_command(label = item)
mbLang['menu'] = mbLang.menu
mbLang.pack(side = LEFT)
#分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令

#添加向菜单中添加checkbutton项
mbOS = Menubutton(root,text = 'OS')
mbOS.menu = Menu(mbOS)
for item in ['Unix','Linux','Soloris','Windows']:
    mbOS.menu.add_checkbutton(label = item)
mbOS['menu'] = mbOS.menu
mbOS.pack(side = LEFT)

#向菜单中添加radiobutton项
mbLinux = Menubutton(root,text = 'Linux')
mbLinux.menu = Menu(mbLinux)
for item in ['Redhat','Fedra','Suse','ubuntu','Debian']:
    mbLinux.menu.add_radiobutton(label = item)
mbLinux['menu'] = mbLinux.menu
mbLinux.pack(side = LEFT)

#对菜单项进行操作
#向Language菜单中添加一项"Ruby",以分隔符分开
mbLang.menu.add_separator()
mbLang.menu.add_command(label = 'Ruby')

#向OS菜单中第二项添加"FreeBSD",以分隔符分开
mbOS.menu.insert_separator(2)
mbOS.menu.insert_checkbutton(3,label = 'FreeBSD')
mbOS.menu.insert_separator(4)

#将Linux中的“Debian”删除
mbLinux.menu.delete(5)

root.mainloop()

属性

选项 含义
activebackground 设置当 Menubutton 处于活动状态(通过 state 选项设置状态)的背景色
activeforeground 设置当 Menubutton 处于活动状态(通过 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
Table of Contents