python - Windows - 为什么 Win32com 应用程序不能以 .py 或 .pyw 模式运行?
问题描述
我编写了一个语言学习应用程序,希望能够在 .pyw 模式下运行。但是,显然因为我使用的是 Win32com(用于 Sapi 声音),它只能从我的编辑器(空闲)运行。这与之前的一篇文章有关,我以为我遇到了 tkinter 和 pyttsx3 之间的冲突。但是现在,既不使用 pyttsx3 也不使用 tkinter,我遇到了同样的问题。
要非常清楚这一点 - 这是一段简单的代码:
userinput = input("Press any key")
毫不奇怪,这段代码在我的编辑器(在 shell 中)运行良好,并且只需双击 .py 文件(在控制台中运行)也可以正常运行。如果我重命名为 .pyw 文件并双击它也会运行良好。
这是另一段使用 Sapi 文本转语音的简单代码:
import win32com.client
speaker = win32com.client.Dispatch ("SAPI.SpVoice")
speaker.Speak ("Hello World")
此代码在 Idle(我的编辑器)中运行良好,但不会通过单击 .py 文件或 .pyw 文件运行。我得到一个非常快速的控制台闪光,它没有说话就关闭了。
只是为了测试,我添加了这样的用户输入行:
import win32com.client
speaker = win32com.client.Dispatch ("SAPI.SpVoice")
speaker.Speak ("Hello World")
userinput = input("Press any key")
我的想法是,为了强制应用程序持续存在,我将输入用户提示。但这没有用。我以同样短暂的控制台闪光结束,但什么也没发生。它没有说话,也没有等待用户输入。
这很重要,因为根据我的经验,如果应用程序不会在 .pyw 模式下运行,那么在使用 pyinstaller 后它也不会运行。您将简单地获得控制台的相同短暂闪光并且......什么都没有。
抱歉,我是编程新手,也是 Python 新手。我在这里想念什么?如何使应用程序从 .pyw 模式运行?
解决方案
推荐阅读
- node.js - 成功完成后 AWS Lambda 函数超时
- javascript - 在 Next.js 中 - 此站点无法提供安全连接
- filter - 带有数组类型列的 Kendo Grid Server 端过滤
- jquery - 边界半径对更改类没有影响
- python - 在添加新数据之前删除上个月
- sql - 数据透视表和分组依据
- php - Keycloak 发送电子邮件重置密码 401 Unauthorized 或 500 Internal Server Error
- python - 如何将当前秒数重新启动到 59 并开始倒计时
- pandas - 根据条件更改数据框行中的值
- ios - 固定的avfoundation变量,不同的显示亮度