Schreibend auf eine Variable eines parents zugreifen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
Blauer Fasan
User
Beiträge: 49
Registriert: Montag 26. März 2007, 15:08
Kontaktdaten:

Habe einen Einstellungsdialog für meine Anwendung geschieben. Wenn dieser beendet wird, möchte ich die Einstellungen übernehmen und auf eine Variable des Hauptfensters, welches auch gleichzeitig der parent des Einstellungsdialogs ist schreibend zugreifen, sprich den Wert der Variable zum Beispiel von False auf True setzen, nur funktioniert das nicht. Ich kann die Variable des parents ganz einfach mit

Code: Alles auswählen

parent.variablenname
ansprechen, dann kann ich ihren Wert auch auslesen, nur verändern geht anscheinend nicht, wüsste vielleicht jemand warum das so sein könnte?

Vielen Dank im Voraus!
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Hillkorn
User
Beiträge: 12
Registriert: Samstag 19. Januar 2008, 19:31
Kontaktdaten:

Code: Alles auswählen

 self.variablenname = parent.variablenname 
sobald du dann self.variablenname einen wert gibst ist er im parent eigentlich auch drinn jedenfalls geht das bei mir so ;)
lunar

Ich persönlich würde ja beim Schließen des Einstellungsdialogs ein Signal aussenden, welches im übergeordneten Widget abgefangen wird. Dann kann das übergeordnete Widget selbst seine Attribute auf den neuesten Stand bringen.

Zum einen musst du dich dann nicht um Vater-Kind-Verhältnisse kümmern, zum anderen trennst du die Komponenten sauber.
Benutzeravatar
Blauer Fasan
User
Beiträge: 49
Registriert: Montag 26. März 2007, 15:08
Kontaktdaten:

Und wie würde so etwas aussehen, also ich habe da jetzt noch keine Erfahrungen.

Prinzipiell ist die Idee sehr gut! Sauber ist immer gut :D
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
lunar

Das kommt auf das verwendete GUI-Toolkit an.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Das kommt auf das verwendete GUI-Toolkit an.
Mal sehen in welchem Forum wir sind... wxPython würde ich mal schätzen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Leonidas hat geschrieben:
lunar hat geschrieben:Das kommt auf das verwendete GUI-Toolkit an.
Mal sehen in welchem Forum wir sind... wxPython würde ich mal schätzen :)
D'oh, das kommt davon, wenn man sich nur auf das Textfeld konzentriert ;)

Eigentlich können wir ja dann jetzt auf gerold warten, der dürfte bestimmt bald vorbei kommen ;)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

lunar hat geschrieben:Eigentlich können wir ja dann jetzt auf gerold warten, der dürfte bestimmt bald vorbei kommen ;)
Hallo lunar!

Eigentlich wollte ich dieses Thema auslassen. Denn ich weiß nicht weshalb das nicht funktionieren soll. Und von einer Fehlermeldung wird auch nichts geschrieben. Ich denke mal, dass der Fehler mit einem guten Debugger leicht zu finden sein wird. Wahrscheinlich wird die zu ändernde Variable überhaupt nicht angefasst. Wahrscheinlich wird eine NEUE Variable erzeugt. Und das sieht man, wenn man das Programm mit einem Debugger durchcheckt.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

Aber du könntest ihm ja erklären, wie man in wx Ereignisse, Signale oder wie auch immer das da heißt, auslöst, damit er überhaupt gar nicht erst verschiedene Widgets so hässlich mixen muss, sondern schon eventgesteuert programmieren kann ;)
Benutzeravatar
Blauer Fasan
User
Beiträge: 49
Registriert: Montag 26. März 2007, 15:08
Kontaktdaten:

Also eine Fehlermeldung habe ich nicht gepostet, da es keine gibt. Es ist wahrscheinlich wie du sagst Gerold, dass ich die Variable nicht anfassen tue, ich folge dann mal deinem Rat und checke das ganze mit einem Debugger.
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Hillkorn
User
Beiträge: 12
Registriert: Samstag 19. Januar 2008, 19:31
Kontaktdaten:

ich habe das gefühl das python nur dann die variablen des parents verändert wenn der variablenname des childs exakt der gleiche ist also self.a = parent.a würde gehen aber self.a = parent.b nicht
Benutzeravatar
Blauer Fasan
User
Beiträge: 49
Registriert: Montag 26. März 2007, 15:08
Kontaktdaten:

Das Problem liegt nur darin, dass es lesend geht, nur schreibend nicht.
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Blauer Fasan hat geschrieben:Das Problem liegt nur darin, dass es lesend geht, nur schreibend nicht.
Hallo Blauer Fasan!

Ich dachte ja nicht, dass du dieses Problem immer noch hast. Es bringt dich weiter, wenn du dein Problem in einem kleinen Beispiel-Code zusammenfasst, den du uns zeigen kannst.

Und vielleicht bringt dich dieser Beitrag auf eine Idee (versuche das Beispiel auszuprobieren und zu verstehen):
http://www.python-forum.de/post-78061.html#78061

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Blauer Fasan
User
Beiträge: 49
Registriert: Montag 26. März 2007, 15:08
Kontaktdaten:

Danke Gerold, das Problem "besteht" noch, da ich leider deinen ersten Rat noch nicht durchführen konnte, habe momentan sehr viel Stress in der Schule, ich werde beides sehr gute Tipps nach der stressigen Zeit ausprobieren, also erstmal danke für deine und für Hilfe der anderen auch!
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Antworten