0

我想在说话之前打印一行。当我在 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')

我想在说话之前打印一行,但编译后总是先说话。

4

2 回答 2

0

在某些环境中,Python 的 print 语句被“缓冲”,直到有空闲时间才真正打印出来。

尝试添加

import sys

然后做

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

刷新标准输出将强制 Python 在继续之前实际显示打印的文本。

于 2019-04-13T04:03:16.037 回答
0

@JohnAnderson 在主要问题中的评论正是我想要的。添加flush=True打印语句就可以了

于 2019-04-13T05:10:21.800 回答