Maison >développement back-end >Tutoriel Python >Comment implémenter une entrée de console non bloquante en Python ?
Entrée de console non bloquante
L'entrée de console non bloquante est cruciale dans les applications où une interaction simultanée avec l'utilisateur et un traitement continu sont nécessaires. Dans ce cas, l'objectif est d'implémenter cette fonctionnalité pour un client Python IRC.
Entrée non bloquante sous Windows
Pour les systèmes Windows, le module msvcrt fournit un solution :
import msvcrt num = 0 done = False while not done: print(num) num += 1 if msvcrt.kbhit(): print("you pressed", msvcrt.getch(), "so now I will quit") done = True
Entrée non bloquante sous Linux
Activé Linux, les modules select, tty et termios peuvent être utilisés :
import sys import select import tty import termios def isData(): return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []) old_settings = termios.tcgetattr(sys.stdin) try: tty.setcbreak(sys.stdin.fileno()) i = 0 while 1: print(i) i += 1 if isData(): c = sys.stdin.read(1) if c == '\x1b': break finally: termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
Entrée non bloquante multiplateforme
Pour une solution multiplateforme ou pour intégrer la fonctionnalité GUI, Pygame peut être utilisé :
import pygame from pygame.locals import * def display(str): text = font.render(str, True, (255, 255, 255), (159, 182, 205)) textRect = text.get_rect() textRect.centerx = screen.get_rect().centerx textRect.centery = screen.get_rect().centery screen.blit(text, textRect) pygame.display.update() pygame.init() screen = pygame.display.set_mode( (640,480) ) pygame.display.set_caption('Python numbers') screen.fill((159, 182, 205)) font = pygame.font.Font(None, 17) num = 0 done = False while not done: display(str(num)) num += 1 pygame.event.pump() keys = pygame.key.get_pressed() if keys[K_ESCAPE]: done = True
Avec ces méthodes, vous pouvez implémenter une entrée de console non bloquante dans votre Applications Python, permettant un traitement continu tout en répondant aux entrées de l'utilisateur en temps réel.
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!