Objekt in Funktion zur Laufzeit erstellt - global nutzen
Verfasst: Dienstag 26. April 2022, 07:16
Hallo,
als Anfänger fehlen mir evtl. nur die richtigen Suchbegriffe; ich habe folgendes vor:
Ich habe eine Klasse definiert. Ich nutze tkinter und habe mittels Menuleiste ein neues Fenster erstellt. In diesem Fenster tätige ich mehrere Einstellungen (Checkbutton usw) und mit einem Buttondruck will ich diese Daten speichern (mit einem Objekt der definierten Klasse). Im restlichen Verlauf des Programms möchte ich dieses Objekt jetzt nutzen können (global). Aktuell kennt mein Code das Objekt außerhalb meiner Buttonfunktion nicht. Am besten per Codebeispiel:
Die Klasse:
Die Buttonfunktion:
Und nun möchte ich dieses Objekt Spieler1 nutzen, quasi als globale und dauerhaften Einstellungen für die restliche Anwendung. (Ich bekomme übrigens nur die Meldung "NameError: name 'Spieler1' is not defined")
Ich habe natürlich auch ein wenig herumprobiert, komme nur immer an den gleichen Fehler:
z.B. habe ich getDaten() rausgeholt und drüber definiert, dann in der clickButton() mit dem Funktionsaufruf getDaten('Hans',63) als Parameter übergeben:
Brachte ebenfalls keinen Erfolg.
Wonach suche ich hier oder gibt es eine schnelle Lösung, die ich übersehe/nicht kenne? Ich vermute eine Lösung mit Parametern!?
Vielen dank für eure Mühe!
als Anfänger fehlen mir evtl. nur die richtigen Suchbegriffe; ich habe folgendes vor:
Ich habe eine Klasse definiert. Ich nutze tkinter und habe mittels Menuleiste ein neues Fenster erstellt. In diesem Fenster tätige ich mehrere Einstellungen (Checkbutton usw) und mit einem Buttondruck will ich diese Daten speichern (mit einem Objekt der definierten Klasse). Im restlichen Verlauf des Programms möchte ich dieses Objekt jetzt nutzen können (global). Aktuell kennt mein Code das Objekt außerhalb meiner Buttonfunktion nicht. Am besten per Codebeispiel:
Die Klasse:
Code: Alles auswählen
class createSpieler():
def __init__(self, name, alter):
self.name = name
self.alter = alter
Code: Alles auswählen
def clickButton():
#neues Fenster wird erstellt
global superfrage
def getDaten():
if superfrage:
Spieler1 = createSpieler('Hans', 63)
Ich habe natürlich auch ein wenig herumprobiert, komme nur immer an den gleichen Fehler:
z.B. habe ich getDaten() rausgeholt und drüber definiert, dann in der clickButton() mit dem Funktionsaufruf getDaten('Hans',63) als Parameter übergeben:
Code: Alles auswählen
def getDaten(name, alter):
global superfrage
if superfrage:
Spieler1 = createSpieler('Hans', 63)
def clickButton():
global superfrage
superfrage = True
getDaten('Hans',63)
Brachte ebenfalls keinen Erfolg.
Wonach suche ich hier oder gibt es eine schnelle Lösung, die ich übersehe/nicht kenne? Ich vermute eine Lösung mit Parametern!?
Vielen dank für eure Mühe!