Skript mit Keyboardinputs steuern (pynput)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
vLinus
User
Beiträge: 1
Registriert: Mittwoch 21. Juni 2017, 15:15

Hallo zusammen,

ich bin noch ziemlich neu im Umgang mit Python. Ich benutze Ubuntu 16.10, Python 3.5 und Spyder als Editor.

Mein erstelltes Skript stellt nun, mit Hilfe von Matplotlib, eine Sequenz von Zeitreihen von verschiedenen Kanälen eines Messsystems dar. Nun würde ich gerne mit einem Tastendruck aufs Keyboard (z.B. Pfeil rechts) zur nächsten Sequenz von Messwerten wechseln. Ich stelle mir vor, mein Skript in einem unendlichen While-Loop laufen zu lassen, sobald ein Keyboard Input kommt die neue Sequenz zu laden und die alte Darstellung in Matplotlib zu schliessen bzw. die neue Darstellung der Sequenz zu laden.

Als Ausgangslage habe ich mir die Code Sequenz "Monitoring the keyboard" (https://pypi.python.org/pypi/pynput) angeschaut. Diese funktioniert auch super, gibt mir jeweils auf der Konsole aus was ich gerade drücke auf dem Keyboard. Naja, jetzt würde ich den gedrückten Input gerne in eine Variable verpacken, sodass ich gewisse Aktionen in meinem eigentlichen Skript auslösen kann (if pfeil.rechts ...tu das). Irgendwie schaffe ich die Verknüpfung nicht und würde Euch gerne um euren Rat bitten? Ich hoffe, ich habe mich einigermassen verständlich ausgedrückt...!

Besten Dank & mit Grüssen
Linus

Angehängt ist noch das "Monitoring the keyboard", welches ich benutze...


[codebox=python file=Unbenannt.txt]from pynput import keyboard

def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(
key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))

def on_release(key):
print('{0} released'.format(
key))
if key == keyboard.Key.esc:
# Stop listener
return False

# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()[/code]
Zuletzt geändert von Anonymous am Mittwoch 21. Juni 2017, 17:21, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@vLinus: Ich würde ja eher eines der GUI-Rahmenwerke verwenden in die man Matplotlib-Plots einbinden kann, beziehungsweise bietet Matplotlib doch auch von sich aus interaktive Plots an. Es gibt auch ein keypress_demo.py.
Sedi.py
User
Beiträge: 4
Registriert: Donnerstag 29. Juni 2017, 08:32

Hey Linus!

Ich sitze gerade an dem selben Problem, hast du bereits eine Lösung gefunden?
Würde mich freuen wenn du sie teilen könntest.
Antworten