Objekt wird nicht richtig erzeugt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Morlon
User
Beiträge: 11
Registriert: Samstag 26. Dezember 2015, 18:18

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
Zuletzt geändert von Anonymous am Samstag 26. Dezember 2015, 20:55, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@BlackJack
Weshalb meinst Du, dass das keine Klasse ist?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
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.
Antworten