文章目录
- 一、组件简介
- 二、运用实例
- 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 |