in ActionMap Funktionsaufruf mit Parameter

  • Hallo


    Aktuell rufe ich in einer Actionmap für jede Taste eine eigene Funktion auf, von der aus dann alle wieder die gleiche Funktion mit einem Parameter aufrufen.


    jetzt würde ich den Code gern etwas optimieren und hätte mir das so vorgestellt:
    (leider funktioniert das nicht)

    Wie kann man im ActionMap einen Parameter an eine dort genannte Funktion weitergeben?
    Oder kann man evtl. in der Zielfunktion die gedrückte Taste abfragen/ermitteln ?


    Danke schon mal.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    • Offizieller Beitrag

    Nein direkt geht das nicht und irgendwie sehe ich auch keinen Sinn drinn sowas zu tun :winking_face:


    Was du tun könntes wäre "boundFunction" verwenden... einfach mal in den e2 sourcen greppen... wird in diversen python dateien verwendet.


    Aber außer dass es ein wenig weniger Schreib Arbeit ist, hast Du da auch nichts von.


    Also ob du nun für jede action eine minimale def blasel(self): ... self.keyPress(... machst.. oder bound function verwendest.. der interne Ablauf ist identisch.


    Dein obiger code mit (1) (2) .. ist übrigens so schon kaputt :winking_face:


    Weil machwas dann schon beim erzeugen der action map aufgerufen wird... die Actionmap erwartet dort eine funktion die sie aufrufen soll wenn eine taste gedrückt wird.. bei dir bekommt die actionmap aber den returnwert der funktion machwas mit (1) aufgerufen :winking_face:


    cu

  • Dass das mit machewas(1) nicht funktioniert, hab ich ja schon gemerkt. Hätte ja sein können, dass es vielleicht nur ein Syntaxproblem ist.
    Es geht wirklich nur um weniger Codezeilen, um so auch etwas Schreibarbeit zu sparen.


    Wenn ich z.B. alle Tasten 0-9 zuweisen will, dann muss ich in der ActionMap tatsächlich 10 verschiedene Funktionen angeben?


    Hätte gedacht, dass man immer die gleiche Zielfunktion angeben kann und dort die Unterscheidung der Taste macht.


    Aber wenn es nicht geht, auch OK.
    Muss man halt ein paar Zeilen mehr tippen :smiling_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ah, ok.
    Das mit dem NumberActionMap ist ja cool.
    Hätte gedacht, dass es sowas für alle Tasten gibt.


    Wie gesagt ist das aber kein Problem.
    Wollte mir nur nicht aus Unwissenheit vielleicht zu viel Tipparbeit machen :smiling_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hab mir das jetzt mal mit "boundFunction" angeschaut.
    Ist ja gar nicht so kompliziert, wie es sich zuerst anhörte :face_with_tongue:


    Ich würde sagen, Problem gelöst. Danke für den Tipp :smiling_face:


    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ok, Danke.
    Da war ich mir nicht sicher, hab es aber nicht mehr ausprobiert.
    Dachte, die Bezeichnung des Wertes muss identisch mit der Bezeichnung in der Funktion sein.


    Wenn ich mehrere Werte in der Funktion hätte, müsste man dann die Werte beim Aufruf "betiteln" oder kommt es da dann wie sonst auch nur auf die Reihenfolge an?

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Solange du keine Defaults in deiner Funktion vorgibst musst ja eh alle angeben, einfach die Reihenfolge einhalten :smiling_face: , den Namen musst nur angeben wenn du mehrere Parameter mit Defaultwerten hast aber nur einen davon übergeben willst.