2016-01-11 3 views
2

Если кто-то может помочь с моей проблемой, я был бы действительно благодарен, я не эксперт, когда дело доходит до python 3, но я знаю что-то или слишком, так как я изучаю ,Как получить текст для отображения в виде ввода cmd

Моя проблема заключается в том, что я пытаюсь отображать текст в программе python в командной строке, которая выглядит так, как будто пользователь вводит в режиме реального времени пользователем, я знаю, что это работает в оболочке pythons, но не работает, t в CMD ,

Я использовал CX_freeze для разработки сценария в .exe, я осмотрелся, но не имел никакого успеха найти кого-то с подобной проблемой.

Import sys 
import time as t 

def typing(sentence): 
    for words in sentence+"\n": 
     sys.stdout(words) 
     t.sleep(0.04765) **Ignore the silly float, me being a perfectionist** 

Тогда я задержать и вызвать функцию, «текст» в качестве примера, потому что, почему нет ..

t.sleep(2) 
typing("Text") 

И тогда должно быть небольшая задержка при вводе слова

но если этого не может быть достигнуто в cmd, пожалуйста, кто-нибудь скажет мне, есть ли другое приложение по умолчанию в Windows, которое может использоваться как оболочка?

ответ

1

Итак, проблема заключается в динамическом обновлении экрана, вам необходимо использовать sys.stdout.flush(). Кроме того, sys.stdout не является функцией, вам нужно использовать sys.stdout.write("")

Примечание: В примере функции ниже, я использовал random LIB, чтобы добавить более человеческий облик к типизации:

import sys 
import time 
import random 
def typing(sentence): 
    for words in sentence+"\n": 
     sys.stdout.write(words) 
     sys.stdout.flush() 
     time.sleep(0.45*random.random()) 

EDIT: просто Быстрая оговорка, у меня нет машины для окон, поэтому я не тестировал ее на cmd, но она работает на терминале OSX

Смежные вопросы