Bild Tkinter

Fragen zu Tkinter.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo Forum,

Ich würde gerne ein Bild einbinden.
Leider funktioniert es nicht.
Es kommt folgende Fehlermeldung:

_tkinter.TclError: unknown option "-image"


Ich kann mir vorstellen warum aber wie macht man sowas richtig?

Code: Alles auswählen

from tkinter import *

def NewFile():
    print ("New File!")
def About():
    print ("This is a simple example of a menu")


    
root = Tk()

#Würde gerne ein Bild in mein Fenster einbinden
#Wenn diese beiden Zeilen auskommentiert werden, wird ein Fenster ohne Bild angezeigt
logo = PhotoImage(file="C:/E/scripts/E_scripts/media/Loading.gif")
w1 = Label(root, image=logo).pack(side="right")


menu = Menu(root, image=logo)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=NewFile)
filemenu.add_command(label="Exit", command=root.quit)

helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=About)

mainloop()
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich denke nicht, dass deine Beschreibung und dein Code die echte Problematik darstellen. Aus diesem Grund bitte nicht nur die Fehlermeldung zeigen, sondern den Stacktrace.

Denn das Problem sind mE nicht die vermeintlichen 2 Zeilen. Das kann gar nicht sein, denn ohne die gibt es photo nicht, und damit ist die Zeile danach mit Menu(..., image=photo) ja offensichtlich nicht lauffähig.

Und DAS ist auch ziemlich sicher die problematische. Label kennt ein image Argument. Menu NICHT.

http://effbot.org/tkinterbook/menu.htm
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Benutze Python3.6
Nein funktioniert wirklich nicht.

das Programm kann gerne kopiert und getestet werden ;-)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zeig bitte den echten stacktrace.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Traceback (most recent call last):
File "C:\E\scripts\E_scripts\src\test.py", line 20, in <module>
menu = Menu(root, image=logo)
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 2862, in __init__
Widget.__init__(self, master, 'menu', cnf, kw)
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 2293, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown option "-image"
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe dir GESAGT, dass es das Menü ist. Und dir die Doku gezeigt. Und dieser Stacktrace BEWEIST es.

Auch andere Dinge können gerne getestet werden. Zb die Hinweise, die man hier bekommt.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

kappier es trotzdem nicht.
Wie soll ich das denn machen?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du verwendest das Bild an zwei Stellen. Du hast behauptet es ist ein Problem beim Label. Ist es nicht. Also bleibt dir andere Stelle übrig. Da könnte man das ja mal NICHT verwenden. So als Idee.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi ermulch

So sollte es klappen. Dein Bild wird im Menu und Label angezeigt:

Code: Alles auswählen

from tkinter import *

APP_XPOS = 100
APP_YPOS = 100
APP_WIDTH = 300
APP_HEIGHT = 200

def NewFile():
    print ("New File!")
    
def About():
    print ("This is a simple example of a menu")


root = Tk()
#root.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
root.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))

#Würde gerne ein Bild in mein Fenster einbinden
#Wenn diese beiden Zeilen auskommentiert werden, wird ein Fenster ohne Bild angezeigt
logo = PhotoImage(file="C:/E/scripts/E_scripts/media/Loading.gif")
w1 = Label(root, image=logo).pack(side="right")

menu = Menu(root) #, image=logo)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu, image=logo)
filemenu.add_command(label="New", command=NewFile)
filemenu.add_command(label="Exit", command=root.quit)

helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=About)

mainloop()
Gruss wuf
Take it easy Mates!
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo, vielen Dank für eure Hilfe.
Antworten