Hallo,
ich hab das Problem, wenn ich tasten mit sdtscr.getch abfrage, dass ich es dann nicht schaffe es so zu programmieren, dass egal wie lange ich die Taste drücke es nur als ein druck gewertet wird.
Vielen Dank!
Tasten mit Curses auslesen
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Da keiner Antwortet will ich mal meine Vermutung äußern: Ich vermute es geht nicht.
Bei GUI Toolkits kann man meist auf Key_down, Key_up events reagieren, das scheint bei curses zu fehlen. Und der Key wird dann mit der Anschalgsverzögerung des Betriebsystems? wiederholt.
Bei GUI Toolkits kann man meist auf Key_down, Key_up events reagieren, das scheint bei curses zu fehlen. Und der Key wird dann mit der Anschalgsverzögerung des Betriebsystems? wiederholt.
Wenn ich das Problem richtig verstanden habe, dann suchst du wahrscheinlich sowas:
Habe hier mal eine abstrakte Form gewählt, weil man das natürlich auch für andere Dinge als nur für getch() benutzen kann. Der zu übergebende getter wäre hier halt getch().
Alternativ übrigens auch mit groupby() machbar:
Code: Alles auswählen
def get_unique_items(getter):
last_seen = object()
while True:
item = getter()
if item != last_seen:
last_seen = item
yield last_seen
Alternativ übrigens auch mit groupby() machbar:
Code: Alles auswählen
from itertools import count, groupby
def get_unique_items(getter):
items = (getter() for _ in count())
return (key for key, group in groupby(items))
Oder in einem Rutsch:
Der Einsatz von object() dient übrigens dazu, eine Abbruchbedingung zu haben, die niemals erfüllt wird, ergo: eine Endlosschleife (iter() verhält sich in dieser Form wie ein while not). Durch den Einsatz eines Generators (die äußeren runden Klammern) ist es aber trotzdem möglich, eine begrenzte Menge an Elementen aus dieser Schleife zu holen, z.B. via islice().
Code: Alles auswählen
unique_items = (
key for key, group in groupby(iter(getter, object()))
)