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

如何在PySimpleGUI的菜单项中添加图片/图标?

PySimpleGUI菜单项添加图标实现方案

PySimpleGUI本身没有直接提供菜单项添加图标的API,但由于它底层基于Tkinter,我们可以通过调用Tkinter的原生组件方法来实现图标与文字并排显示的效果,以下是具体实现步骤和代码示例:

实现步骤

  • 先定义PySimpleGUI的菜单布局并创建窗口
  • 获取窗口对应的Tkinter根对象及菜单的原生组件
  • 使用Tkinter的entryconfig方法为指定菜单项设置图标,并通过compound参数控制图标位置

代码示例

import PySimpleGUI as sg
from PIL import Image, ImageTk

# 定义菜单结构
menu_layout = [
    ['文件', ['打开', '保存', '退出']],
    ['编辑', ['复制', '粘贴']]
]

# 创建带菜单的窗口
window = sg.Window('带图标菜单示例', layout=[[sg.Menu(menu_layout)]])

# 获取Tkinter原生菜单组件
root = window.TKroot
main_menu = window.MenuBar.TK_Menubar

# 加载并处理图标(建议尺寸16x16,适配菜单显示)
open_icon = Image.open('open_icon.png').resize((16, 16))
tk_open_icon = ImageTk.PhotoImage(open_icon)

# 为"打开"菜单项设置左侧图标
main_menu.entryconfig('打开', image=tk_open_icon, compound='left')

# 处理子菜单图标示例(以"编辑"菜单下的"复制"为例)
edit_menu = main_menu.nametowidget(main_menu.entrycget('编辑', 'menu'))
copy_icon = Image.open('copy_icon.png').resize((16, 16))
tk_copy_icon = ImageTk.PhotoImage(copy_icon)
edit_menu.entryconfig('复制', image=tk_copy_icon, compound='left')

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == '退出':
        break

window.close()

注意事项

  • 需保留Tkinter图片对象的引用(如示例中的tk_open_icon),避免被Python垃圾回收导致图标消失
  • 图标尺寸建议与菜单文字高度匹配,防止显示错位
  • 若需为多级子菜单设置图标,需逐级获取对应子菜单的Tkinter原生对象后再调用entryconfig

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:15:28