2016-07-17 31 views
1

Mein Problem ist ziemlich einfach. Ich möchte eine Schleife ausführen, während der Benutzer einen Schlüssel gedrückt hält, in meinem Fall R.Während Schleife, wenn Tastaturtaste gehalten wird

Der Catch ist: Ich nicht wollen PyGame verwenden, und das Konsolenfenster wird nicht fokussiert werden. (Ausgewählt)

Edit: Ich sah, dass diese Frage als ein Duplikat gekennzeichnet wurde. Ich habe den anderen Thread überprüft, und der Hauptunterschied zwischen den beiden ist, dass dieser auf einen Schlüssel überprüft werden muss, mit dem Python/Konsole-Fenster außerhalb des Fokus und nicht ausgewählt.

+0

Hört sich an, als ob Sie einen Thread für die Tastatureingabe benötigen ... Was haben Sie versucht, dies zu erreichen? –

+0

@ cricket_007 Ich weiß nicht, was ich versuchen soll, alles, was ich bei Google gefunden habe, war für PyGame. ** Bearbeiten: ** Und Sie müssten mir sagen, wie Multithreading zu verwenden, da niemand scheint, mir dabei zu helfen. – spikespaz

+2

Duplizieren? http://stackoverflow.com/questions/11918999/key-listeners-in-python –

Antwort

0

Bei verwenden Sie Fenster:

msvcrt wahrscheinlich die Bibliothek Sie suchen (https://docs.python.org/2/library/msvcrt.html). Diese lib enthält die kbhit Funktion, die ‚true zurück, wenn ein Tastendruck zu lesenden wartet‘:

from msvcrt import kbhit, getch 

while (kbhit()): 
    getch() 
    #code 

Die getch den Schlüssel liest, so dass es für immer in der Schleife bleibt nicht (weil die kbhit Funktion erkennt immer noch einen nicht gelesenen Schlüssel).

+0

Danke! Ein kleines Problem: Es kann keinen Tastendruck erkennen, wenn das Konsolenfenster nicht fokussiert ist. '' 'während True: wenn kbhit() und getch() == b'r ':' '' – spikespaz