Как напечатать независимые куски текста Python - PullRequest
0 голосов
/ 30 апреля 2019

Ситуация: вывод подсказки на экран с таймером обратного отсчета

Быстрый пример:

Enter selection, default choice will be selected after timer runs out
Timer: 01:05
(1) Selection 1 (Default)
(2) Selection 2
(3) Selection 3

Selection: 

Таймер должен продолжать работать, в то время как пользователь должен иметь возможность вводить выбор непрерывно. Вот код для таймера. На данный момент все печатается с использованием print().

def countdown(t):
    while t:
        mins, sec = divmod(t, 60)
        hours, mins = divmod(mins, 60)
        timeformat = '{:02d}:{:02d}:{:02d}'.format(hours, mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1

Проблема: это будет означать, что приглашение и таймер обратного отсчета (на данный момент мой таймер блокирует [вызывается из метода]) должны быть взаимоисключающими

Вопрос: Как сделать эти два фрагмента текста независимыми друг от друга, чтобы таймер продолжал отсчитывать время, но обратный отсчет таймера не влияет на запрос и ввод пользователя (с использованием «\ r»)

1 Ответ

1 голос
/ 30 апреля 2019

Вам нужен отдельный поток, который будет обновлять таймер, и поток, который будет читать пользовательский ввод.

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