Python 3 – Tkinter Menubutton
Tkinter是Python中GUI编程的标准集合,并且在Python3中也是默认安装的。Menubutton是Tkinter中用于创建菜单按钮的核心类之一,它可以在按钮上方显示一个下拉菜单供用户选择。
创建一个简单的Menubutton
我们可以使用Tkinter库中的Menubutton类来创建一个简单的菜单按钮。以下是一个基本的示例代码:
import tkinter as tk
window = tk.Tk()
window.title("菜单按钮")
# 创建一个菜单按钮
mb = tk.Menubutton(window, text="选项")
mb.grid()
# 添加下拉菜单
menu = tk.Menu(mb, tearoff=False)
menu.add_command(label="选项 1")
menu.add_command(label="选项 2")
menu.add_command(label="选项 3")
menu.add_separator()
menu.add_command(label="退出", command=window.quit)
mb.config(menu=menu)
window.mainloop()
在上面的代码中,我们首先创建了一个Tkinter窗口,并设置了窗口的标题为“菜单按钮”。接下来,我们使用Menubutton类创建了一个菜单按钮,并将其添加到窗口上。再次使用Menu类来创建一些菜单项,并使用add_command方法为其添加标签和执行命令。menu.add_separator()用于在菜单中添加分隔线。最后通过调用mb.config(menu=menu)将菜单绑定到菜单按钮上。当选择“退出”菜单项时,通过调用command=window.quit关闭窗口。
添加复选框和单选框
Menubutton不仅仅是一个简单的下拉菜单创建工具。我们可以使用Menubutton来添加复选框和单选框菜单项。以下示例将演示如何在菜单项中添加复选框和单选框:
import tkinter as tk
window = tk.Tk()
window.title("菜单按钮")
# 创建菜单按钮
mb = tk.Menubutton(window, text="选项")
mb.grid()
# 添加下拉菜单
menu = tk.Menu(mb, tearoff=False)
menu.add_checkbutton(label="复选项 1")
menu.add_checkbutton(label="复选项 2")
menu.add_checkbutton(label="复选项 3")
menu.add_separator()
menu.add_radiobutton(label="单选项 1")
menu.add_radiobutton(label="单选项 2")
menu.add_radiobutton(label="单选项 3")
menu.add_separator()
menu.add_command(label="退出", command=window.quit)
mb.config(menu=menu)
window.mainloop()
在上面的代码中,我们创建了一个菜单按钮,并使用Menu类创建了一个下拉菜单。我们使用add_checkbutton方法和add_radiobutton方法分别向菜单中添加了复选框和单选框菜单项。当用户单击复选框菜单项时,菜单项前面的方框将被选中或取消选中。在单选钮菜单项中,用户只能选择其中一个菜单项。最后,我们添加了一个退出菜单项,便于关闭窗口。
带图标的菜单项
Menubutton还支持为菜单项添加图像。以下是在菜单中添加图标的示例:
import tkinter as tk
from tkinter import PhotoImage
window = tk.Tk()
window.title("菜单按钮")
# 添加图像
img = PhotoImage(file="icon.png").subsample(10, 10)
window.tk.call('wm', 'iconphoto', window._w, img)
# 创建菜单按钮
mb = tk.Menubutton(window, text="选项", image=img, compound="right")
mb.grid()
# 创建菜单
menu = tk.Menu(mb, tearoff=False)
menu.add_command(label="选项 1", image=img, compound="left")
menu.add_command(label="选项 2", image=img, compound="left")
menu.add_command(label="选项 3", image=img, compound="left")
menu.add_separator()
menu.add_command(label="退出", command=window.quit, image=img, compound="left")
mb.config(menu=menu)
window.mainloop()
在上面的示例中,我们首先通过调用PhotoImage方法创建了一个新的图像对象。然后我们在窗口中添加了一个图标,使用tk.call(‘wm’, ‘iconphoto’, window._w, img)方法将图像绑定到窗口上。接下来,我们为菜单按钮添加一个图片,使用Menubutton的compound属性可以使图像和文本混合。最后,我们改变了menu.add_command方法的调用,使其在标签和标签图像之间添加了图像,从而为菜单项添加了图标。
结论
Tkinter Menubutton是Python GUI编程中一个简单但强大的工具,能够帮助我们快速创建各种菜单。通过了解Menubutton不同的功能,并使用我们的示例代码,我们可以创建一个菜单按钮、添加下拉菜单、复选框和单选框菜单项,同时为菜单项添加图标。