Seite 1 von 1

Ich kann nicht auf Objekt zugreifen

Verfasst: Donnerstag 15. März 2007, 12:07
von sprudel
Hallo.
Ich habe ein Problem. Es sagt mir das Objekt Hauptfenster existiert nicht.
Folgender Code:

Code: Alles auswählen

def init_Hauptfenster(punkte=0,note=0):

    #Bereich des Hauptfensters mit Hauptmenü
    Hauptfenster = tk.Tk()
...
    Hauptfenster.pack()
    Hauptfenster_restartbutton= tk.Button(Hauptfenster,text="zum Hauptmenü",command=Hauptfenster_restart)
    Hauptfenster_restartbutton.pack()
    Hauptfenster.mainloop()

.............

def Hauptfenster_restart():
    Hauptfenster.destroy()
    init_Hauptfenster(0,0)


In der Funktion Hauptfenster_restart() sagt es mir dann allerdings dass Hauptfenster nicht existiert.
Was mache ich falsch?

Verfasst: Donnerstag 15. März 2007, 12:12
von MBR
Hauptfenster ist in deinem Fall als lokale Variable zu sehen.

Binde Hauptfenser an deine Klasse (self.Hauptfenster) und deine Objekte werden gefunden.

Gruß,
M.

Verfasst: Donnerstag 15. März 2007, 12:16
von sprudel
Hallo. Das ganze ist leider keine Klasse. Und ich möchte das ehrlich gesagt auch erstmal ohne Klasse machen. Ist das auch so irgendwie möglich?

Verfasst: Donnerstag 15. März 2007, 12:24
von Dill
EDIT:

Code: Alles auswählen

def init_Hauptfenster(punkte=0,note=0): 
    global Hauptfenster
    #Bereich des Hauptfensters mit Hauptmenü 
    Hauptfenster = tk.Tk() 
machs aber später gescheit. sowas kann man zum testen machen, schön ist das nicht.

Verfasst: Donnerstag 15. März 2007, 13:07
von BlackJack
IMHO sollte man es gleich richtig machen und sich ``global`` gar nicht erst angewöhnen. GUIs sind *das* Paradebeispiel wo objektorientierte Programmierung sinnvoll ist.

Verfasst: Donnerstag 15. März 2007, 13:26
von Dill
man sieht die vorteile der oop aber erst wenn man es mal "falsch" gemacht hat.

Verfasst: Donnerstag 15. März 2007, 14:09
von Leonidas
Dill hat geschrieben:man sieht die vorteile der oop aber erst wenn man es mal "falsch" gemacht hat.
Oder OOP schon mal nachgebaut hat: ``Hauptfenster_init()``, ``Hauptfenster_on_btn_clicked()``, ``Hauptfenster_restart()`` etc.