Comment créer une filature de ligne de commande de curseur?
Est-il un moyen d'imprimer un filature du curseur dans un terminal à l'aide de Python?
Vous devez vous connecter pour publier un commentaire.
Est-il un moyen d'imprimer un filature du curseur dans un terminal à l'aide de Python?
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela, en supposant que votre terminal gère \b
spinner = itertools.cycle(['-', '/', '|', '\\'])
au lieu de créer un générateur de fonction (moins verbeux et plus réutilisation) comme indiqué icispinner.next()
est remplacé parnext(spinner)
; voir stackoverflow.com/a/1073582/5025060.Une belle pythonic façon est d'utiliser des itertools.cycle:
Aussi, vous pourriez vouloir utiliser filetage de l'affichage de la toupie au cours d'un long appel de fonction, comme dans http://www.interclasse.com/scripts/spin.php
next(spinner)
au lieu despinner.next()
spinner = itertools.cycle('-/|\\')
.Facile à utiliser l'API (cela va faire tourner la toupie dans un thread séparé):
Maintenant l'utiliser dans un
with
bloquer n'importe où dans le code:float(delay)
va augmenter si flottent pas, devrait êtreisinstance(delay, Number)
, avecNumber
denumbers
.Une solution:
La clé est d'utiliser le caractère de retour arrière '\b' et flush stdout.
Oui, c'est possible. C'est juste une question d'impression du caractère de retour arrière (
\b
) entre les quatre personnages qui feraient le "curseur" regardez comme elle tourne (-
,\
,|
,/
).les malédictions du module. j'aurais un coup d'oeil à la addstr() et addch() les fonctions. N'a jamais été utilisé.
Pour plus avancé de la console de manipulations, sous unix, vous pouvez utiliser le malédictions module python, et sur windows, vous pouvez utiliser WConio qui fournit des fonctionnalités équivalentes de la bibliothèque curses.
Saisir le génial
progressbar
module http://code.google.com/p/python-progressbar/utilisation
RotatingMarker
.Mises en garde:
Dans mon expérience, cela ne fonctionne pas dans tous les terminaux. D'une façon plus robuste de le faire sous Unix/Linux, il est plus compliqué est d'utiliser le les malédictions module qui ne fonctionne pas sous Windows.
Vous voulez probablement ralentir certains comment avec traitement réel ce qui se passe en arrière-plan.
Cela peut être également une solution à l'aide d'une fonction avec un paramètre.
Ici ya go - simple et clair.
Brut, mais la solution la plus simple:
Il y a des limites évidentes, mais encore une fois, brut.