📜  带有图标的菜单 tkinter - Python (1)

📅  最后修改于: 2023-12-03 15:25:27.237000             🧑  作者: Mango

带有图标的菜单 tkinter - Python

在Python中,使用tkinter模块创建带有图标的菜单相对来说较为简单。我们可以使用PIL模块来加载和处理图像,并将其添加到菜单项中。接下来,我们将一步步介绍如何使用Python的tkinter模块创建带有图标的菜单。

步骤一:导入模块

我们首先需要导入所需的模块,包括tkinter和PIL。Tk类是整个窗口应用程序的容器,我们还需要导入其他组件如MenuPhotoImage 类 创建图像及 Label 类 和 Pack 类 进行排列。在导入所有这些模块之后,我们就可以开始创建我们的带有图标的菜单了。

from tkinter import *
from tkinter import Menu
from PIL import Image, ImageTk
步骤二:创建主窗口和菜单

现在我们需要初始化Tkinter和创建主窗口。然后,我们创建Menu 的实例并将其附加到主窗口上。最后,我们将菜单项附加到主菜单上,其中每个菜单项都需要一个回调函数。

# 创建主窗口
root = Tk()
root.title("带有图标的菜单示例")

# 创建菜单
menu_bar = Menu(root)
root.config(menu=menu_bar)

# 创建文件菜单
file_menu = Menu(menu_bar, tearoff=0)
# 添加菜单项
file_menu.add_command(label="新建")
file_menu.add_command(label="打开")
file_menu.add_command(label="保存")
file_menu.add_separator()
file_menu.add_command(label="退出", command=root.quit)

# 将文件菜单项添加到菜单栏
menu_bar.add_cascade(label="文件", menu=file_menu)
步骤三:创建菜单项图标

接下来,我们需要从图像文件中创建图像对象,在Python中,我们使用PIL模块来实现这一点。我们使用Image.open()方法打开一个图像文件并将其转换为PhotoImage

# 创建新建图标
new_img = Image.open("new.png")
new_icon = ImageTk.PhotoImage(new_img)

# 创建打开图标
open_img = Image.open("open.png")
open_icon = ImageTk.PhotoImage(open_img)

# 创建保存图标
save_img = Image.open("save.png")
save_icon = ImageTk.PhotoImage(save_img)

# 创建退出图标
quit_img = Image.open("quit.png")
quit_icon = ImageTk.PhotoImage(quit_img)
步骤四:添加图标到菜单项

现在我们已经有了所有必要的图标,接下来我们需要将它们添加到每个菜单项中。我们可以使用compound属性控制图像的位置。

# 添加图标到菜单项
file_menu.add_command(label="新建", image=new_icon, compound="left", accelerator="ctrl+n")
file_menu.add_command(label="打开", image=open_icon, compound="left", accelerator="ctrl+o")
file_menu.add_command(label="保存", image=save_icon, compound="left", accelerator="ctrl+s")
file_menu.add_separator()
file_menu.add_command(label="退出", image=quit_icon, compound="left", command=root.quit)
步骤五:显示菜单

最后一步是显示我们的菜单。我们可以使用mainloop()方法来显示窗口并等待用户进行交互。

root.mainloop()
完整代码
from tkinter import *
from tkinter import Menu
from PIL import Image, ImageTk

# 创建主窗口
root = Tk()
root.title("带有图标的菜单示例")

# 创建菜单
menu_bar = Menu(root)
root.config(menu=menu_bar)

# 创建文件菜单
file_menu = Menu(menu_bar, tearoff=0)
# 添加菜单项
file_menu.add_command(label="新建")
file_menu.add_command(label="打开")
file_menu.add_command(label="保存")
file_menu.add_separator()
file_menu.add_command(label="退出", command=root.quit)

# 创建新建图标
new_img = Image.open("new.png")
new_icon = ImageTk.PhotoImage(new_img)

# 创建打开图标
open_img = Image.open("open.png")
open_icon = ImageTk.PhotoImage(open_img)

# 创建保存图标
save_img = Image.open("save.png")
save_icon = ImageTk.PhotoImage(save_img)

# 创建退出图标
quit_img = Image.open("quit.png")
quit_icon = ImageTk.PhotoImage(quit_img)

# 添加图标到菜单项
file_menu.add_command(label="新建", image=new_icon, compound="left", accelerator="ctrl+n")
file_menu.add_command(label="打开", image=open_icon, compound="left", accelerator="ctrl+o")
file_menu.add_command(label="保存", image=save_icon, compound="left", accelerator="ctrl+s")
file_menu.add_separator()
file_menu.add_command(label="退出", image=quit_icon, compound="left", command=root.quit)

# 将文件菜单项添加到菜单栏
menu_bar.add_cascade(label="文件", menu=file_menu)

# 显示菜单
root.mainloop()

这就是如何使用Python和Tkinter在菜单项中添加图标。你可以根据需要对代码进行修改并将其应用到自己的应用程序中。