Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Melaksanakan Input Pengguna Tidak Menyekat dalam Aplikasi Konsol Python?

Bagaimanakah Saya Boleh Melaksanakan Input Pengguna Tidak Menyekat dalam Aplikasi Konsol Python?

Susan Sarandon
Lepaskan: 2024-12-01 01:46:09
asal
842 orang telah melayarinya

How Can I Implement Non-Blocking User Input in Python Console Applications?

Input Pengguna Tidak Menyekat dalam Aplikasi Konsol

Apabila membina aplikasi konsol yang memerlukan input pengguna secara serentak dengan proses lain, adalah penting untuk mempunyai -menyekat input untuk mengelakkan program daripada membeku sementara menunggu input.

Menggunakan Modul msvcrt (Windows)

Untuk aplikasi konsol eksklusif Windows, modul msvcrt menyediakan penyelesaian mudah:

import msvcrt

# Define variables
num = 0
done = False

# Infinite loop
while not done:
    # Print and increment number
    print(num)
    num += 1

    # Check for keyboard input
    if msvcrt.kbhit():
        # Display pressed key and quit
        pressed_key = msvcrt.getch()
        print("You pressed", pressed_key, "so now I will quit")
        done = True
Salin selepas log masuk

Menggunakan Modul termios (Linux)

Untuk aplikasi konsol berasaskan Linux, modul termios boleh digunakan:

import sys, select, tty, termios

# Define utility function to check for keyboard input
def isData():
    return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], [])

# Configure terminal settings for non-blocking input
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())

# Infinite loop
num = 0
while 1:
    # Print and increment number
    print(num)
    num += 1

    # Check for keyboard input
    if isData():
        # Read single character from keyboard
        c = sys.stdin.read(1)
        # Check for escape key to quit
        if c == '\x1b':
            break

# Restore terminal settings
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
Salin selepas log masuk

Menggunakan Modul Pygame (Cross-Platform)

Jika anda memerlukan input tidak menyekat merentas berbilang platform atau mahukan antara muka pengguna grafik, Pygame menawarkan penyelesaian merentas platform:

import pygame
from pygame.locals import *

# Define variables
num = 0
done = False

# Initialize Pygame
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)

# Infinite loop
while not done:
    # Display number
    display(str(num))
    num += 1

    # Check for events (e.g., keyboard input)
    pygame.event.pump()
    keys = pygame.key.get_pressed()

    # Check for escape key to quit
    if keys[K_ESCAPE]:
        done = True
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Input Pengguna Tidak Menyekat dalam Aplikasi Konsol 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