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

Bagaimana untuk Melaksanakan Input Konsol Tidak Menyekat dalam Python?

DDD
DDDasal
2024-12-01 18:00:18953semak imbas

How to Implement Non-Blocking Console Input in Python?

Input Konsol Tanpa Sekat

Input konsol tanpa sekatan adalah penting dalam aplikasi yang memerlukan interaksi serentak dengan pengguna dan pemprosesan berterusan. Dalam kes ini, matlamatnya adalah untuk melaksanakan ciri ini untuk klien IRC Python.

Input Tidak menyekat pada Windows

Untuk sistem Windows, modul msvcrt menyediakan penyelesaian:

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

Input tidak menyekat pada Linux

Pada Linux, modul pilih, tty, dan termios boleh digunakan:

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)

Input Tanpa Sekat Merentas Platform

Untuk penyelesaian merentas platform atau untuk menyepadukan fungsi GUI, Pygame boleh digunakan:

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

Dengan kaedah ini, anda boleh melaksanakan input konsol tidak menyekat dalam aplikasi Python anda, membenarkan pemprosesan berterusan sambil membalas input pengguna dalam masa nyata.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Input Konsol Tidak Menyekat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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