8

我使用的是 Windows 版本的 Python。我有一个使用 Pyside 的 Python 脚本(没什么复杂的,一种“hello world”)。

当我单击我的脚本文件或从命令行启动它时,它会完美执行,并且会出现一个 GUI。

但是,如果脚本是从文本终端(cmd.exe、cygwin、...)启动的,我想避免使用 GUI。一种自动知道它是否应该具有 GUI 输出或文本输出的脚本。

有没有一种简单易行的方法来做到这一点?我希望能够使用Windows 版本的 Python而不是 Cygwin 软件包附带的版本)来做到这一点。

一个明显的方法是在我从文本终端启动脚本时添加一种“--no-gui”参数,但我想知道 Python(或一些 Python 库)是否已经为此提供了工具。

此外,我在这台计算机上有一个 SSH 服务器(Cygwin-base),我可以在远处执行脚本,但没有出现 GUI(当然)并且我没有错误消息。在这种情况下,了解脚本是否由于缺少 Windows 图形支持而失败,或者脚本是否应该针对文本终端调整其输出是非常有趣的。

4

1 回答 1

2

我知道您可以将文件作为 .py 文件或 .pyw 文件运行。第二个选项用于 GUI 应用程序,它不会打开控制台窗口。要将这两种情况区分开来,您可以isatty检查sys.stdout.

import sys
if sys.stdout.isatty():
    # .py file is running, with console window
    pass
else:
    # .pyw file is running, no console
    pass

编辑

  • 我尝试在 linux box 上使用 putty+ssh 运行它——它返回 True。
  • 我尝试在 Windows 框中使用msys bash shell - 它返回 True(.py 文件)
  • 我尝试将 cygwin bash shell 与 cygwin python 一起使用 - 它返回 True(.py 文件)
  • 不幸的是,我无法尝试 putty + windows cygwin ssh 服务器。
于 2012-04-12T07:56:52.343 回答