Seite 1 von 1

Objekt wird nicht richtig erzeugt

Verfasst: Samstag 26. Dezember 2015, 19:58
von Morlon
Hi,
wenn ich diesen Code.

Code: Alles auswählen

from tkinter import *
class char:
    def draw_sprite():
        root = Tk()
        canvas_width = 300
        canvas_height =300
        canvas = Canvas(root,
               width=canvas_width,
               height=canvas_height)
        canvas.pack()
        bild=PhotoImage(file=r"C:\Users\Admin1\Desktop\x.png")
        bildLabel = canvas.create_image(20,20, anchor=NW, image=bild)
Mit char.draw_sprite() ausführe erstellt er zwar das Fenster, jedoch ohne mein Bild.
Entferne ich jedoch das class und def, also führ enur den Rohcode aus, dann wird so wie es sein soll das Bild im Fenster angezeigt.
Was habe ich beim Aufruf falsch gemacht?

LG,
morlon

Re: Objekt wird nicht richtig erzeugt

Verfasst: Samstag 26. Dezember 2015, 21:00
von BlackJack
@Morlon: Die Klasse ist keine und die Methode ebenfalls nicht, sondern eine Funktion. Die Namen darin sind nur lokal und hören auf zu existieren nachdem die Funktion abgearbeitet ist, das heisst auch das Fenster müsste eigentlich verschwinden. Was auf jeden Fall verschwindet sind Bildobjekte wenn man die nicht irgendwie von Python aus ”erreichbar” hält. Zum Beispiel in dem man das Objekt zum Attribut eines Objekts macht.

Re: Objekt wird nicht richtig erzeugt

Verfasst: Samstag 26. Dezember 2015, 22:38
von mutetella
@BlackJack
Weshalb meinst Du, dass das keine Klasse ist?

Re: Objekt wird nicht richtig erzeugt

Verfasst: Samstag 26. Dezember 2015, 23:26
von BlackJack
@mutetella: Weil eine Klasse Daten und dazugehörige Funktionen zu einem Objekt zusammenfasst und als Bauplan für Exemplare dient. Hier steckt einfach nur syntaktisch eine Funktion in einer ”Klasse” die halt semantisch keine ist.