Как напечатать строку перед тем, как она произнесена после компиляции? - PullRequest
0 голосов
/ 13 апреля 2019

Я хочу напечатать строку, прежде чем она произнесена. Когда я запускаю программу в режиме IDLE, она работает нормально. Но после компиляции текст сначала озвучивается, а затем печатается. Может ли кто-нибудь помочь мне с этим?

Я пробовал разные способы ввода одного и того же кода, но он не работал.

import pyttsx3
engine = pyttsx3.init()
engine.setProperty('rate', 150)
engine.setProperty('volume', 1)
def say(y):
        print(y, end='')
        engine.say(y)
        engine.runAndWait()
say('Hello World')

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

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

@ Комментарий Джона Андерсона в основном вопросе сделал именно то, что я хотел. Добавление flush=True в оператор печати сделал это

0 голосов
/ 13 апреля 2019

В некоторых средах оператор печати Python «буферизируется» и фактически не печатается до тех пор, пока не будет простоя.

Попробуйте добавить

import sys

и затем делает

print(y, end='')
sys.stdout.flush()

Очистка стандартного вывода заставит Python фактически отображать напечатанный текст перед продолжением.

...