2017-08-30 3 views
2

Ich baue ein Menü mit tkinter, aber die Symbole werden nicht angezeigt. Können Sie mir helfen?Python Tkinter - Das Menüsymbol wird nicht angezeigt

mb=Menu(w) 
w.config(menu=mb) 
fm=Menu(mb,tearoff=0) 
om=Menu(mb,tearoff=0) 
hm=Menu(mb,tearoff=0) 
mb.add_cascade(label=_("File"),menu=fm) 
fm.add_command(label=_("Esci"), image=PhotoImage(r"icons\exit.png"), 
       compound="left",command=w.destroy) 
fm.iconPhotoImage = PhotoImage(r"icons\exit.png") 
mb.add_cascade(label=_("Opzioni"),menu=om) 
om.add_command(label=_("Impostazioni"), image=PhotoImage(r"icons\settings.png"), 
       compound="left", command=settings.creaFinestra) 
om.add_command(label=_("Cambia lingua"), image=PhotoImage(r"icons\language.png"), 
       compound="left", command=settings.cambiaLingua) 
mb.add_cascade(label=_("Aiuto"), menu=hm) 
hm.add_command(label=_("Guida"), image=PhotoImage(r"icons\help1.png"), 
       compound="left", 
       command= lambda: webbrowser.open("https://github.com/maicol07/school_life_diary_pc/wiki")) 
hm.add_command(label=_("Informazioni"), image=PhotoImage(r"icons\help.png"), 
       compound="left",command=info) 
+0

Können Sie versuchen, eines der Bilder in Ihrem Hauptwidget anzuzeigen? Fügen Sie einfach 'Label (w, Bild = PhotoImage (r" icons \ settings.png ")). Pack()' in Ihrem Code hinzu. Wenn es nicht angezeigt wird, liegt das Problem in der Image-Erstellung selbst. –

Antwort

1

Wie erklärt here, für eine solche Bildformate, können Sie die PIL Bibliothek verwenden müssen, die wandelt sie in Tkinter-kompatible Bildobjekte:

from PIL import Image, ImageTk 

image = Image.open("icons\exit.png") 
photo = ImageTk.PhotoImage(image) 

Dann ist es zu Ihrem Widget anhängen:

fm.add_command(label=_("Esci"), image=photo, ...) 

Sie müssen diesen Vorgang für jedes verwendete .png-Bild wiederholen.

+0

Aber ich verwende Bilder mit der PhotoImage-Funktion auch mit anderen Widgets ... Beachten Sie, dass ich Python 3.6.2 verwenden –

+0

png ist Unterstützung in der aktuellen Version von tkinter. –

+0

true, ich weiß nicht, welche Version das OP verwendet, aber da er sie nicht anzeigt, nehme ich an, dass seine Version nicht so neu ist. @SierraMountainTech –

Verwandte Themen