Treeview mit Bild

Fragen zu Tkinter.
Antworten
snowflake
User
Beiträge: 93
Registriert: Mittwoch 9. November 2016, 15:46

Hallo zusammen,

ich verwende einen Treeview und möchte während der Laufzeit die Bilder, welche zeilenweise links angezeigt werden, ändern. Momentan sieht der Code folgendermaßen aus (funktioniert auch so):

Code: Alles auswählen

def resAusfuehren(SqlStatement):	
    LNWtree.tag_configure("KA", background="white", foreground='red', image=picka)
...
    if satz[6]=="KA":
            LNWtree.insert("" , "end", iid = a, values=(a,satz[0],satz[1],satz[2],satz[3],satz[4],satz[5],satz[6],satz[7],satz[8],satz[9],satz[10]), tag="KA")
....

picka = PhotoImage(file="ka.png")
fenster.mainloop() 
Jetzt soll es aber so sein, dass ich das Bild erst unmittelbar vor der Verwendung über ein Variable bekannt mache und dann wird das Bild nicht angezeigt:

Code: Alles auswählen

def resAusfuehren(SqlStatement, bild):	
    LNWtree_loeschen()
    picka = PhotoImage(file=bild)
    LNWtree.tag_configure("KA", background="white", foreground='red', image=picka)
        
...
    
    if satz[6]=="KA":
            LNWtree.insert("" , "end", iid = a, values=(a,satz[0],satz[1],satz[2],satz[3],satz[4],satz[5],satz[6],satz[7],satz[8],satz[9],satz[10]), tag="KA")
...

fenster.mainloop()

    
Kann mir jemand sagen was ich falsch mache?

Vielen Dank und viele Grüße.

snowflake
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst dir das PhotoImage merken. Das ist ein bekannter Schwachpunkt von tkinter.
snowflake
User
Beiträge: 93
Registriert: Mittwoch 9. November 2016, 15:46

Hallo __deets__,

was meinst Du mit "merken"? Kannst Du mir das in einer Codezeile zeigen?

Vielen Dank und sonnige Grüße.

snowflake
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi snowflake

In Tkinter muss das Bild an einem Nagel aufgehängt werden sonst fällt es ins leere.

Code: Alles auswählen

    fenster.picka = PhotoImage(file=bild)
    LNWtree.tag_configure("KA", background="white", foreground='red', image=fenster.picka)
So sollte es funktionieren. Das Bild braucht eine Referenz wo es angehängt wird. Eine Möglichkeit wäre die Referenz auf das Objekt fenster.

Gruss wuf :-)
Take it easy Mates!
snowflake
User
Beiträge: 93
Registriert: Mittwoch 9. November 2016, 15:46

Guten Morgen wuf,

genau so funktioniert es und danach habe ich gesucht. Ich bin Dir sehr dankbar dafür.

Bedanken möchte ich mich auch bei __deets__.

Viele Grüße

snowflake
Antworten