Seite 1 von 1

Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 19:42
von erdmulch
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()

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 20:07
von __deets__
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

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 20:13
von erdmulch
Benutze Python3.6
Nein funktioniert wirklich nicht.

das Programm kann gerne kopiert und getestet werden ;-)

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 20:24
von __deets__
Zeig bitte den echten stacktrace.

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 20:29
von erdmulch
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"

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 20:37
von __deets__
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.

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 21:07
von erdmulch
kappier es trotzdem nicht.
Wie soll ich das denn machen?

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 21:10
von __deets__
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.

Re: Bild Tkinter

Verfasst: Mittwoch 31. Oktober 2018, 21:33
von wuf
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

Re: Bild Tkinter

Verfasst: Samstag 3. November 2018, 10:09
von erdmulch
Hallo, vielen Dank für eure Hilfe.