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: 14053
- 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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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: 14053
- 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()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
@__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: 14053
- 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()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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: 14053
- 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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari