Я вывожу надпись «Нажмите любую клавишу…». После нажатия клавиши я хотел бы, чтобы эта надпись исчезла.
Покопавшись по форуму, не нашёл нормального и адекватного ответа, потому хочу получить помощь в отдельном вопросе.
Чтобы не было никаких вопросов привожу конкретику:

  1. С возвратом каретки не совсем получилось по примеру из Обновление вывода print в Console pyCharm.Как изменить строку вывода? 10 , после обновилось на 9 и тд.?. Нужен был другой, более конкретный пример, который мне дал в ответах ниже Pashok.
  2. Не понятно, к чему была дана эта ссылка Ввод с клавиатуры не приостанавливая работу программы на python. Никак применить данное не смог.
  3. Вот отсюда Python проверка наличия данных в sys.stdin я смог только вытащить сам модуль msvcrt.
  4. Параллельное исполнение двух функций python — пока с многопоточностью в Python не работаю. Рано мне ещё)))
  5. Первая ссылка Cоздание анимации пишущей машинки c обратным процессом в python пригодилась, но в дальнейшем мне не удалось скомбинировать анимацию с кареткой. Т.к. дело моё, то считаю, что без этого можно обойтись. Собственно, в новом вопросе это не описываю.

Код моей текстовой игры работает в двух файлах: один функциональный, второй исполнительный.
Перед вами функция, которая выводит комментаторский текст, не являющийся речью персонажей.

def cnt(text, centers=’center’):
if centers == «left»:
print(‘{:<80}’.format(text), end=»)
elif centers == «right»:
print(‘{:>80}’.format(text), end=»)
elif centers == «center»:
print(‘{:^80}’.format(text), end=»)
sys.stdout.flush()

sys.stdout.write(‘Нажмите Enter для продолжения…r’)
while not msvcrt.kbhit():
pass
sys.stdout.write(‘ r’)
input()

задан 27 мая ’18 в 23:44

Я вывожу надпись «Нажмите любую клавишу…». После нажатия клавиши я хотел бы, чтобы эта надпись исчезла.

Чтобы ожидать любую клавишу на Windows, можно msvcrt.getch() использовать:

import msvcrt

text = «Нажмите любую клавишу…»
print(text, end=», flush=True)
msvcrt.getch()
print(‘b’ * len(text) + ‘ ‘ * len(text), end=», flush=True)

Это стирает текст, печатая пробелы поверх него, если среда поддерживает b управляющую последовательность. См. Не работает цикл из itertools.cycle() использующий b в PyCharm.

Обратите внимание, что ‘b’ * len(text) вместо r использовано для случая, когда text не сначала строки печатается.

ответ дан 28 мая ’18 в 12:13

Можно очищать консоль после нажатия кнопки.

>>> import os
>>> # Для windows:
>>> clear = lambda: os.system(‘cls’)
>>> # Для linux / os x:
>>> clear = lambda: os.system(‘clear’)
>>> clear()

ответ дан 28 мая ’18 в 4:38

Отдельно строку удалить не получиться её можно лишь изменить. Тогда, если вы хотите перезаписать свою последнюю строку, вам нужно добавить r (возврат символа) и end = «», чтобы вы не переходили к следующей строке.
Допустим так.

values = range(0, 101)
for i in values:
print («Complete: «, i, «%», end=»r»)
print («nr», end=»»)

Конечно можно попробовать и по-другому. К примеру так:

import sys

sys.stdout.write(‘text1…r’)
sys.stdout.write(‘text2…r’)
sys.stdout.write(‘text3…n’)

ответ дан 28 мая ’18 в 9:01

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python windows cmd вывод или задайте свой вопрос.