我的tkinter应用将在不导入控制台(.pyw
)的情况下运行,直到导入pyttsx3。导入pyttsx3后,该应用程序只能从编辑器(空闲)运行。
这是一个tkinter应用程序,从空闲状态运行时可以完美运行。我导入pyttsx3,对其进行初始化,让它使用Windows Sapi声音讲话,一切正常,所有tkinter函数从头到尾都按预期运行。但是在Idle之外,该应用将无法在.pyw
模式下运行。它会短暂显示黑色控制台屏幕,然后关闭。我已经非常仔细地检查了-从应用程序中删除了所有pyttsx3代码-除了import语句,从字面上看,仅import语句就足以使应用程序不再以.pyw
模式运行。
import tkinter as tk
(在.pyw模式下可以正常运行)
import tkinter as tk
import pyttsx3 as speak
(不会以.pyw模式运行)
问题:如何简单地导入一个库(甚至不初始化或使用它...只是导入它)导致tkinter应用不再以.pyw的身份运行?导入库是否会以某种方式干扰tkinter主循环?
答案 0 :(得分:0)
好问题。如果我不得不猜测,出于文本到语音转换的目的,pyttsx3库中的某些东西会调用与Python不相关的进程。在这种情况下,Windows可能会打开“命令提示符”窗口,因为该进程独立运行。
除非pyttsx3库包含有关如何抑制此情况的文档(粗略浏览后,我看不到这种情况),然后我建议使用软件包维护者opening a new issue。 我相信在Windows上运行时需要设置 CREATE_NO_WINDOW
flag。