繁体   English   中英

如何在 pysimplegui 的菜单项中添加图像/图标

[英]How to add image/icon in menu item on pysimplegui

我正在使用 PySimplegui 进行 UI 开发,想知道是否有一种方法可以添加菜单图标,如下图所示,这可以通过 Tkinter 完成并且工作正常,但我无法在 pysimplegui 中找到任何参考或链接会有很大帮助

在此处输入图像描述在菜单项中期待这个(图像并排文本)

不完全是你在找什么,但考虑另一种可能性。 你可以在菜单label中放入Unicode个字符。例如,你可以使用 对于“全部保存”菜单 label,以及 对于从磁盘菜单 label 重新加载全部。诀窍是为其他菜单标签找到合适的图像,这可能需要一点创造力。

向菜单项添加图标很复杂。

这里通过tkinter代码一个一个给菜单项添加图标。

import PySimpleGUI as sg

sg.theme('LightGreen')

menu_def = [
    ['&File', ['&Open     Ctrl-O', '&Save       Ctrl-S', '&Properties', 'E&xit']],
    ['&Edit', ['&Paste', ['Special', 'Normal', ], 'Undo', 'Options::this_is_a_menu_key'], ],
    ['&Toolbar', ['---', 'Command &1', 'Command &2',
                  '---', 'Command &3', 'Command &4']],
    ['&Help', ['&About...']]
]


layout = [
    [sg.Menu(menu_def, key='-MENUBAR-')],
    [sg.Output(size=(60, 10))],
]

window = sg.Window("Title", layout, finalize=True)

images = []

# Menu 1 - File
for i in range(4):
    image = sg.tk.PhotoImage(data=sg.EMOJI_BASE64_HAPPY_LIST[0:4][i])
    images.append(image)
    window['-MENUBAR-'].widget.children['!menu'].entryconfigure(i, image=image, compound='left')

# Menu 2 - Edit
for i in range(3):
    image = sg.tk.PhotoImage(data=sg.EMOJI_BASE64_HAPPY_LIST[4:7][i])
    images.append(image)
    window['-MENUBAR-'].widget.children['!menu2'].entryconfigure(i, image=image, compound='left')

# Menu 2 - Edit - Paste
for i in range(2):
    image = sg.tk.PhotoImage(data=sg.EMOJI_BASE64_HAPPY_LIST[7:9][i])
    images.append(image)
    window['-MENUBAR-'].widget.children['!menu2'].children['!menu'].entryconfigure(i, image=image, compound='left')

# Menu 3 - Toolbar
for i, j in enumerate((1, 2, 4, 5)):
    image = sg.tk.PhotoImage(data=sg.EMOJI_BASE64_HAPPY_LIST[9:13][i])
    images.append(image)
    window['-MENUBAR-'].widget.children['!menu3'].entryconfigure(j, image=image, compound='left')

# Menu 4 - Help
for i in range(1):
    image = sg.tk.PhotoImage(data=sg.EMOJI_BASE64_HAPPY_LIST[13])
    images.append(image)
    window['-MENUBAR-'].widget.children['!menu4'].entryconfigure(i, image=image, compound='left')

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break
    print(event, values)

window.close()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM