Entrée non bloquante : lecture d'un seul caractère multiplateforme
Lecture d'un seul caractère à partir d'une entrée utilisateur sans qu'il soit renvoyé à l'écran est un besoin courant dans divers scénarios de programmation. Bien que Windows fournisse une fonction spécifique à cet effet, il peut être difficile de mettre en œuvre une solution multiplateforme.
Approche multiplateforme
Pour surmonter cette limitation, un L'approche polyvalente utilisant la bibliothèque ActiveState Recipes offre une solution qui fonctionne de manière transparente sous Windows, Linux et OSX :
class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows() except ImportError: self.impl = _GetchUnix() def __call__(self): return self.impl() class _GetchUnix: def __init__(self): import tty, sys def __call__(self): import sys, tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return msvcrt.getch() getch = _Getch()
Utilisation
Pour utiliser cette méthode, instanciez la classe _Getch et invoquez son interface appelable pour lire un seul caractère à partir de l'entrée de l'utilisateur :
ch = getch()
Cette approche fournit un mécanisme de saisie non bloquant, permettant aux développeurs de lire un seul caractère de l'utilisateur sans interrompre le déroulement du programme ou le faisant écho à l'écran. C'est un outil précieux pour des réponses rapides et des applications interactives en ligne de commande.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!