Kursortasten
Code: Alles auswählen
import keyboard
i = keyboard.is_pressed("up")
j = keyboard.is_pressed("down")
k = keyboard.is_pressed("left")
l = keyboard.is_pressed("right")
print(i,j,k,l)
- __blackjack__
- User
- Beiträge: 13937
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Dann war wohl keine der Tasten gedrückt als das Programm lief.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
So schnell war ich nicht, ich habe das probiert, da geschah nichts.
Code: Alles auswählen
f keyboard.is_pressed("up"):
print('i')
Code: Alles auswählen
import keyboard
def key():
w = True
while w:
if keyboard.is_pressed("up"):
w = False
return 'u'
if keyboard.is_pressed("down"):
w = False
return 'd'
if keyboard.is_pressed("left"):
w = False
return 'l'
if keyboard.is_pressed("right"):
w = False
return 'r'
c = key()
print(c)
- __blackjack__
- User
- Beiträge: 13937
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@hubgra: Die Funktion ist unnötig umständlich, mal abgesehen von dem unnötigen `w` und das man nicht am verwendeten GUI-Rahmenwerk vorbei programmiert.
Ungetestet:
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
import keyboard
def read_direction():
for key in iter(keyboard.read_key, object()):
if key in {"up", "down", "left", "right"}:
return key[0]
def main():
print(read_direction())
if __name__ == "__main__":
main()
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
@__blackjack__
Was sollen die letzten 4 Zeilen? main() ruft eine Funktion auf, die ggf. wirklich aufgerufen wird.
Warum nicht direkt read_direction()?
Das habe ich gemacht (zuvor die letzten Zeilen auskommentiert), und es passierte: NICHTS
Was sollen die letzten 4 Zeilen? main() ruft eine Funktion auf, die ggf. wirklich aufgerufen wird.
Warum nicht direkt read_direction()?
Das habe ich gemacht (zuvor die letzten Zeilen auskommentiert), und es passierte: NICHTS
- __blackjack__
- User
- Beiträge: 13937
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@hubgra: Das Grundgerüst sieht immer so aus:
Statt `main()` direkt `read_direction()` aufrufen hat keine Ausgabe, weil dann ja das `print()` fehlt. Das könnte man auch in den ``if``-Zweig stecken, aber dann lässt sich das nicht mehr von anderen Modulen aus aufrufen.
Code: Alles auswählen
#!/usr/bin/env python3
def main():
...
if __name__ == "__main__":
main()
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Code: Alles auswählen
def read_direction():
for key in iter(keyboard.read_key, object()):
if key in {"up", "down", "left", "right"}:
print(type(key),key[0])
return(key[0])
print(read_direction())
- __blackjack__
- User
- Beiträge: 13937
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@hubgra: Na Du siehst doch den Test. `key` hat offensichtlich den Typ `str` damit das funktioniert. Und ``key[0]`` damit das gleiche zurückgegeben wird wie bei Deinem Code. Darum ging es doch: Code zu haben der kompakter ist und keine Wiederholungen enthält und das gleiche macht.
Ich habe das gerade mal getestet und bei mir funktioniert es.
Ich habe das gerade mal getestet und bei mir funktioniert es.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware