Как прервать ввод текста в терминале? - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь сделать небольшую RPG-игру, и мне пришла в голову следующая идея:

Идея проста:

1. Class Typing будетпечатать текст так, как будто он набирается на экране.

(функцию проще написать, но проблема будет та же)

import sys
import os
import time


class Typing:
    def __init__(self, text, speed):
        self.text = text
        self.speed = speed

        for l in text:
            sys.stdout.write(l)
            sys.stdout.flush()
            time.sleep(speed)
        sys.stdout.write('\n')
        sys.stdout.flush()


text = '''
                         _____ __             __  
                        / ___// /_____ ______/ /__
                        \__ \/ __/ __ `/ ___/ //_/
                       ___/ / /_/ /_/ / /__/ ,<   
   ____               /____/\__/\__,_/\___/_/|_|  
  / __ \_   _____  _____/ ____/ ____ _      __    
 / / / | | / / _ \/ ___/ /_  / / __ | | /| / /    
/ /_/ /| |/ /  __/ /  / __/ / / /_/ | |/ |/ /     
\____/ |___/\___/_/  /_/   /_/\____/|__/|__/      

'''
Typing(text, 0.005)


2. При нажатии клавиши клавиатуры 'пробел' цикл for прекратится, и на экране отобразится полный текст.

        for l in text:

            # Keyboard would listen for the key 'space'

            # if 'space' key is detected:
            #     os.system('clear)
            #     print(text)

            # Keyboard would stop listing for the key 'space'
            #     break

            sys.stdout.write(l)
            sys.stdout.flush()
            time.sleep(speed)
        sys.stdout.write('\n')
        sys.stdout.flush()

Мой вопрос:

Возможно ли это даже в Python?И если да, то как?

1 Ответ

0 голосов
/ 22 сентября 2019

Возможно, в Python есть модуль клавиатуры .Добавить if keyboard.is_pressed('space'):.Возможно, вы захотите включить небольшую задержку после того, как условие будет выполнено, в противном случае, по-видимому, одно нажатие клавиши будет считано несколькими несколькими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...