编译后如何在说话前打印一行?

时间:2019-04-13 03:52:29

标签: python compilation pyinstaller pyttsx

我想先说一行。当我在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 :(得分:0)

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

尝试添加

import sys

然后做

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

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

答案 1 :(得分:0)

@JohnAnderson在主要问题中的评论完全符合我的要求。 在打印语句中添加flush=True就是了