首页 > 解决方案 > 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 模式运行?

标签: pythonwin32com

解决方案


推荐阅读