events daten übergeben

Plattformunabhängige GUIs mit wxWidgets.
stephan_strecker
User
Beiträge: 18
Registriert: Samstag 5. November 2005, 17:42
Kontaktdaten:

events daten übergeben

Beitragvon stephan_strecker » Mittwoch 14. Dezember 2005, 13:22

Hi,

Code: Alles auswählen

self.Bind(wx.EVT_MENU, self.OnDelete, 123)


wie kann ich der Funktion OnDelete noch Wert übergeben? kann diese Funktion auch in einer anderen Klasse stehen?

thx
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Beitragvon pr0stAta » Mittwoch 14. Dezember 2005, 13:28

Die Methode onDelete bekommt automatisch einen Event
Parameter mitgegeben. Falls du noch etwas anderes mitgeben
möchtest nimm Lambda
http://www.secnetix.de/~olli/Python/lambda_functions.hawk
tobias.vdk
User
Beiträge: 19
Registriert: Mittwoch 23. November 2005, 16:51

Schau mal..

Beitragvon tobias.vdk » Mittwoch 14. Dezember 2005, 13:29

Hallo!

Schau dir mal meinen Beitrag an:
http://www.python-forum.de/viewtopic.ph ... f896390e93
da wird soetwas ähnliches (Zugriff aus Klassen, etc.) beschrieben.
Was willst du denn der Funktion übergeben? Man kann doch innerhalb der Klasse auch auf Daten der Klasse zugreifen. Beispiel:

Code: Alles auswählen

class test:
    ...
    self.Zahl = 1
    ...
    self.Bind(wx.EVT_MENU, self.OnDelete, 123)

def OnDelete(self, event):
    self.Zahl = self..Zahl - 1


Tobias
stephan_strecker
User
Beiträge: 18
Registriert: Samstag 5. November 2005, 17:42
Kontaktdaten:

Beitragvon stephan_strecker » Mittwoch 14. Dezember 2005, 13:43

also etwas genauer :
ich hab eine canvas, auf der einzelne shapes liegen. so ähnlich wie das ogl exmaple bei den wx.beispielen. jeder shape verkörpert eine instanz einer klasse operation. wenn man nun auf eine shape klickt, öffnet sich ein contextmenue, in dem alle verbindungen zu diesem objekt dargestellt werden. diese verbindungen können während der laufzeit ja verändert werden. deshalb müssen die binds immer erneuert werden. wenn man dann so einen menüpunkt auswählt, soll eben eine remove funktion für diese verbindung gestartet werden. diese remove funktion benötigt noch die start und end operation der linie und diese sind nicht in der klasse operation gespeichert.

im prinzip müsste ich

Code: Alles auswählen

self.Bind(wx.EVT_MENU, self.OnDelete(WERT1,WERT2), 123)

aufrufen.

@pr0stAta hm....das mit dem lamba ist schön :-) aber wie bringt mich das weiter könntest du mir das etwas näher erkären?
stephan_strecker
User
Beiträge: 18
Registriert: Samstag 5. November 2005, 17:42
Kontaktdaten:

Beitragvon stephan_strecker » Mittwoch 14. Dezember 2005, 15:35

thx ich hab es jetzt mit dem lamba hinbekommen funktioniert super

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder