Comment obtenir la saisie de l'utilisateur au cours d'une boucle while sans blocage
Je suis en train d'écrire une boucle while qui met constamment à jour l'écran à l'aide d'os.system("clear") et l'impression d'un texte à un autre message toutes les quelques secondes. Comment puis-je obtenir la saisie de l'utilisateur au cours de la boucle? raw_input() juste des pauses et des attentes, ce qui n'est pas la fonctionnalité que je veux.
import os
import time
string = "the fox jumped over the lazy dog"
words = string.split(" ")
i = 0
while 1:
os.system("clear")
print words[i]
time.sleep(1)
i += 1
i = i%len(words)
Je voudrais être en mesure d'appuyer sur 'q' ou 'p' dans le milieu de quitter et de mettre en pause, respectivement.
Sans rapport avec votre question: notez que la chaîne.split() peut, plus simplement, remplacez la chaîne.split(" ").
C'est cool, un mec avec une 1 rep à venir, asling, prenant ensuite s'en aller. l'amour que.
Hey e-satis, il semble que j'ai enfreint une règle de la communauté. Désolé. Comme vous avez pu le constater, je suis nouveau ici et je ne suis pas sûr de savoir comment les choses sont exécutés. J'ai été en vacances et n'ont pas été en mesure de poursuivre la tâche que cette question de manière à éviter tout commentaire ou un merci aurait été mal informés. Pourriez-vous m'indiquer l'équivalent de l'étiquette de la FAQ?
string.split()
et string.split(" ")
ne sont pas la même chose.C'est cool, un mec avec une 1 rep à venir, asling, prenant ensuite s'en aller. l'amour que.
Hey e-satis, il semble que j'ai enfreint une règle de la communauté. Désolé. Comme vous avez pu le constater, je suis nouveau ici et je ne suis pas sûr de savoir comment les choses sont exécutés. J'ai été en vacances et n'ont pas été en mesure de poursuivre la tâche que cette question de manière à éviter tout commentaire ou un merci aurait été mal informés. Pourriez-vous m'indiquer l'équivalent de l'étiquette de la FAQ?
OriginalL'auteur | 2009-08-11
Vous devez vous connecter pour publier un commentaire.
La sélectionnez module en Python standard library peut être ce que vous cherchez -- l'entrée standard a FD 0, mais vous pouvez aussi avoir besoin de mettre un terminal en "raw" (par opposition à "cuit"), sous unix-y des systèmes, pour obtenir des touches individuelles car, contrairement à l'ensemble des lignes complètes avec de fin de ligne. Si sur Windows, msvcrt, également en Python standard library, a toutes les fonctionnalités dont vous avez besoin,
msvcrt.kbhit()
vous indique si une touche est en attente, et, dans l'affirmative,msvcrt.getch()
vous indique le caractère qu'il est.OriginalL'auteur Alex Martelli
Vous pouvez également vérifier l'une des recettes disponibles, ce qui vous donne la fonctionnalité que vous recherchez pour Unix et Windows.
OriginalL'auteur Eric O Lebigot
Vous pouvez le faire avec les fils, voici un exemple de base :
Comme d'habitude, à l'aide de threads est difficile, alors assurez-vous de comprendre ce que vous faites avant de codage.
Avertissement : File d'attente sera renommer dans la file d'attente en Python 3.
OriginalL'auteur e-satis