Seite 1 von 1
Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 17:08
von Mungo1981
Liebe Community,
Ich stehe mal wieder auf dem Schlauch.
Ich habe eine Classe von einem TKInter abgeleitet:
In dieser Erzeuge ich eine Tabelle aus einer Matrix von Entry-Widgets
Code: Alles auswählen
def creatingDerivativTables(self):
self.pbt2 = tk.PanedWindow(self.m1)
pbtA = tk.PanedWindow(self.pbt2)
pbtB = tk.PanedWindow(self.pbt2)
pbtRes = tk.PanedWindow(self.pbt2)
self.derivatTableA = Tables(pbtA)
self.derivatTableB = Tables(pbtB)
self.derivatTableRes = Tables(pbtRes)
self.pbt2.add(pbtA)
self.pbt2.add(pbtB)
self.pbt2.add(pbtRes)
self.m1.add(self.pbt2)
Und nun kommt das Problem:
Ich müsste self.derivativeTableA mit self.derivativeTableB vertauschen - Werte mäßig.
Code: Alles auswählen
def doInterchange(self, mode):
if mode == "AB":
self.derivatTableA.interchange(self.derivatTableB)
leider bekomme ich immer gemeldet, dass es keine self.derivativeTableA
gäbe.
Kann mir irgendjemand vielleicht kurz auf die Sprünge helfen
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 17:36
von __deets__
Die Fehlermeldung ist ja recht eindeutig. Da du nicht den gesamten Code zeigst, kann man nur raten. Wenn creatingDerivativTables gelaufen ist, dann *muss* self.derivatTableA existieren. Ausser du loeschst das irgendwie. Also ist creatingDerivativTables nicht gelaufen zu dem Zeitpuntk, wo da was ausgetauscht werden soll.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 17:50
von Mungo1981
Ok, du hast ja vollkommen Recht.
Ich bin jetzt über 2 Jahre raus aus Python
Und versuche mich seit 3 Tagen wieder drin.
Also erst einmal Entschuldigung:
Das Problem liegt an einer sehr Merkwürdigen Stelle.
Code: Alles auswählen
moveTableMenu.add_command(label="Interchange Table A with B", command=self.doInterchange("AB"))
An dieser Stelle - so dachte ich - soll vereinbart werden dass ein Funktionsaufruf von "self.dointerchange" mit dem Parameter "AB" vereinbart wird.
Nur Python denkt es soll hier tatsächlich die Funktion "self.doInterchange("AB")" ausgeführt werden - was nicht meinen Erwartungen entspricht.
Habt ihr vielleicht eine Idee ob es irgendwie möglich ist das richtige zu erreichen. Also:
- Eine Vereinbarung dass die Funktion self.doInterchange mit dem Parameter "AB" aufgerufen wird
Ein schon etwas klügerer
Mungo1981
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 18:39
von Sirius3
Wie __deets__ schon geschrieben hat, kann man ohne den kompletten Code nichts sagen. Das Stückwerk und Deine Erklärungsversuche helfen da nur bedingt.
Auch der komplette Traceback ist wichtig, und nicht Deine gekürzte Version.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 18:40
von __deets__
Das geht wahlweise mit einem lambda oder functools.partial. Wird hier permanent besprochen, einfach mal ein bisschen suchen.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:18
von Mungo1981
Entschuldigung aber wäre es da nicht einfacher, für jede Menu Option:
viewtopic.php?f=18&t=48429
Eine einfache Funktion zu schreiben
wären in meine Falle nur 6 zusätzliche Funktionen.
Ein ermunterter
Mungo1981
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:29
von __blackjack__
@Mungo1981: Nein‽
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:32
von Mungo1981
Ok,
Wenn es einfacher ist eine Lambda zu schreiben ...
... dann her mit der Anleitung.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:38
von Mungo1981
Wäre es für obige Funktion einfach:
Code: Alles auswählen
moveTableMenu.add_command(label="Interchange Table A with B", command=map(lambda x: self.Interchange(x), "AB"))
Ein
Mungo1981
der es mal wagen möchte
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:42
von Mungo1981
Hab gerade folgende Stelle gefunden:
viewtopic.php?f=18&t=43322&p=329669&hil ... ue#p329669
Da geht es praktisch genau um mein Problem .... nur bin ich ein blutiger Anfänger, noch dazu ein Künstler noch dazu seit 2 Jahren aus dem Thema und versuche seit 3 Tagen meine Probleme wieder mit Python zu lösen.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 20:54
von Mungo1981
Hallo hab jetzt folgendes:
moveTableMenu.add_command(label="Interchange Table A with B", command=map(lambda x: self.doInterchange(x), "AB"))
Es wird sxchon einmal nicht mehr Ausgeführt - wenn es übergeben wird ...
.... nur leider wird es auch nicht mehr auf Kommando ausgeführt.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 21:10
von __deets__
Woher hast du denn das map? Das hat hier nichts verloren.
Ah. Sehe gerade den Post davor. Nicht alles, was irgendwie mit lambda zu tun hat, ist anwendbar. Der Kontext hier ist tkinter, und da findest du auch speziell Beispiele für.
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 21:11
von Mungo1981
Ok,
jetzt hab ichs
Code: Alles auswählen
l moveTableMenu.add_command(label="Interchange Table A with B", command= lambda : self.doInterchange("AB"))
Ich glaube ich bin gar nicht so Dumm
Re: Sein oder Nicht-Sein einer Member Variable einer Classses
Verfasst: Mittwoch 29. April 2020, 23:29
von snafu
Dann glaub du mal...