You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Tkinter中为Menustrip菜单栏添加图标

在Tkinter菜单栏中添加图标的方法

Tkinter原生Menu组件没有直接设置图标的参数,但可以通过将图片与文字结合作为菜单选项标签来实现,常用方式是借助Pillow库处理图片(支持更多格式),具体步骤如下:

1. 准备工作

先安装Pillow库(未安装的话执行下面命令):

pip install pillow

2. 完整代码示例

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()
root.title("带图标的菜单栏")

# 加载并调整图标尺寸(按需修改,比如20x20适配菜单大小)
icon_path = "你的图标路径.png"  # 替换成实际图标文件路径
img = Image.open(icon_path).resize((20, 20), Image.LANCZOS)
tk_img = ImageTk.PhotoImage(img)

# 创建菜单栏
menubar = tk.Menu(root)

# 创建文件子菜单
file_menu = tk.Menu(menubar, tearoff=0)
# 添加带图标的选项:用compound指定图标位置(left/right/top/bottom)
file_menu.add_command(label=" 新建", image=tk_img, compound="left", command=lambda: print("新建文件"))
file_menu.add_command(label=" 打开", image=tk_img, compound="left", command=lambda: print("打开文件"))
file_menu.add_separator()
file_menu.add_command(label=" 退出", image=tk_img, compound="left", command=root.quit)

# 将子菜单挂载到菜单栏
menubar.add_cascade(label="文件", menu=file_menu)

# 给主窗口配置菜单栏
root.config(menu=menubar)

root.mainloop()

3. 关键细节说明

  • compound参数:控制图标与文字的相对位置,可选值有left(图标左)、right(图标右)、top(图标上)、bottom(图标下)。
  • 若不想用Pillow,可使用Tkinter自带的PhotoImage,但仅支持GIF、PPM/PGM格式,加载方式改为:
    tk_img = tk.PhotoImage(file="你的图标路径.gif")
    
  • 必须保留图片对象的引用(比如示例中的tk_img),否则Python垃圾回收会清除图片,导致菜单中看不到图标。

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36