Ответ 1
Вам не нужно использовать sys
, вам просто нужно flush=True
:
def textinput(txt,waittime=0.4):
for letter in txt:
print(letter, end = '',flush=True)
time.sleep(waittime)
Вы также можете просто перебирать строку.
import time
def textinput(txt,waittime=0.04):
end = len(txt)
letters = 0
while end != letters:
print(txt[letters], end = '')
letters += 1
time.sleep(waittime)
textinput('Hello there!')
Это, в основном, моя функция написания слов буквами по букве, она работает безупречно на IDLE при ее тестировании, однако, когда я запускаю ее нормально (и она открывает командную строку), то, что я пытаюсь написать, остается невидимым, а затем внезапно отображает слова сразу. Я напечатал что-то не так, или это проблема командной строки? Я использую окна 10.
Вам не нужно использовать sys
, вам просто нужно flush=True
:
def textinput(txt,waittime=0.4):
for letter in txt:
print(letter, end = '',flush=True)
time.sleep(waittime)
Вы также можете просто перебирать строку.
Вывод, вероятно, буферизирован, пытаясь очистить его, добавив следующую строку после печати:
sys.stdout.flush()
Вероятнее всего, проблема заключается в том, что стандартный вывод не будет автоматически очищаться, вместо этого он получает буферизацию, так как ваш случай работает, вы должны вручную flush()
stdout -
import time
import sys
def textinput(txt,waittime=0.04):
end = len(txt)
letters = 0
while end != letters:
print(txt[letters], end = '')
sys.stdout.flush()
letters += 1
time.sleep(waittime)
textinput('Hello there!')