Maison > développement back-end > Tutoriel Python > Comment puis-je lire un seul caractère à partir d'une entrée utilisateur sans bloquer ni faire écho sur plusieurs plates-formes ?

Comment puis-je lire un seul caractère à partir d'une entrée utilisateur sans bloquer ni faire écho sur plusieurs plates-formes ?

Linda Hamilton
Libérer: 2024-12-29 19:30:12
original
490 Les gens l'ont consulté

How Can I Read a Single Character from User Input Without Blocking or Echoing Cross-Platform?

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()
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal