Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mendapatkan Input Konsol Tidak Menyekat dalam Python?
Mendapatkan Input Konsol Tidak Menyekat
Apabila membuat aplikasi interaktif, selalunya perlu menerima input pengguna tanpa mengganggu proses yang sedang berjalan. Ini timbul dalam situasi seperti pembangunan klien IRC, di mana gelung terus menerima dan mentafsir respons pelayan.
Pernyataan Masalah
Dalam Python, menggunakan raw_input untuk input konsol menghentikan gelung sehingga pengguna memberikan input. Untuk mencapai input tidak menyekat, kami memerlukan pendekatan alternatif.
Penyelesaian
Untuk pengguna Windows yang hanya bekerja dengan input konsol, modul msvcrt tersedia:
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
Untuk persekitaran Linux, modul termios menawarkan a penyelesaian:
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': # x1b is ESC break finally: termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
Untuk platform跨 atau apabila menyertakan GUI dalam aplikasi anda, Pygame ialah pilihan serba boleh:
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
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Input Konsol Tidak Menyekat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!