Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mendapatkan Input Konsol Tidak Menyekat dalam Python?

Bagaimana untuk Mendapatkan Input Konsol Tidak Menyekat dalam Python?

Susan Sarandon
Lepaskan: 2024-12-02 14:10:13
asal
953 orang telah melayarinya

How to Get Non-Blocking Console Input in 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
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan