python-3.x 如何在pysimplegui上的菜单项中添加图像/图标

fxnxkyjh  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(404)

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


在菜单项中应包含此内容(图像与文本并排)

mwngjboj

mwngjboj1#

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

xj3cbfub

xj3cbfub2#

向菜单项添加图标很复杂。
在这里,通过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()

相关问题