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
Lepaskan: 2024-12-01 18:00:18
asal
958 orang telah melayarinya

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

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan