M5Dial Touch: Unterschied zwischen den Versionen
Zeile 43: | Zeile 43: | ||
; func | ; func | ||
: Name einer Funktion die ausgeführt werden soll, wenn das Touch-Element aktiviert wird. | : Name einer Funktion die ausgeführt werden soll, wenn das Touch-Element aktiviert wird. | ||
=== Identifikation eines Touch-Elementes=== | |||
Dieser Codeschnippsel kann als Orientierung dienen: | |||
<pre> | |||
>>> def detect(x): | |||
if 0<x<42: | |||
print('innerhalb') | |||
else: | |||
print('ausserhalb') | |||
>>> x = 25 | |||
>>> detect(x) | |||
innerhalb | |||
>>> detect(125) | |||
ausserhalb | |||
</pre> | |||
Mit folgender Abfrage kann ein Touch-Element identifiziert werden: | |||
<pre> | |||
if x1<x<x2 and y1<y<y2: | |||
# dann wurde ein Element gefunden! | |||
</pre> |
Version vom 27. April 2024, 16:52 Uhr
Die Verwendung des Touchscreens hält noch einige Hürden bereit.
Das Grundprinzip ist mit M5.Touch.getCount() abzufragen, ob der Touchscreen berührt wird. Nicht berührt wird 0, bei Berührung 1 zurückgegeben.
Das funktioniert aber nicht als Argument für if und while!
Ideen für eine Touch-Service-Routine
Ich möchte eine Funktion schreiben, die aktiverte Touch-Elemente findet.
Sie soll eine ID des aktivierten Elementes und die Dauer der Berührung zurückgeben oder eine Funktion ausführen und ggf. deren Rückgabe zurückgeben.
Datenstruktur für jedes Touch-Element
Die unten dargestellte Datenstruktur soll für jedes aktuell zu überwachende Touch-Element erstellt und in einer Liste zusammengefasst werden. Diese Liste wird an die Funktion übergeben.
# so: touch_data = {'x1':0, 'y1':0, 'x2':100, 'y2':50, 'id':42, 'func':None} # oder so: touch_data_1 = {'startpoint':(0, 0), 'endpoint':(100, 50), 'id':42, 'func':None}
- x1, y1, startpoint
- die Koordinaten oben links des Touch-Elementes
- x2, y2, endpoint
- die Koordinaten unten rechts des Touch-Elementes
- id
- individuelle Kennung des Touch-Elementes
- func
- Name einer Funktion die ausgeführt werden soll, wenn das Touch-Element aktiviert wird.
Identifikation eines Touch-Elementes
Dieser Codeschnippsel kann als Orientierung dienen:
>>> def detect(x): if 0<x<42: print('innerhalb') else: print('ausserhalb') >>> x = 25 >>> detect(x) innerhalb >>> detect(125) ausserhalb
Mit folgender Abfrage kann ein Touch-Element identifiziert werden:
if x1<x<x2 and y1<y<y2: # dann wurde ein Element gefunden!