2

我有一个 python 控制台应用程序。像大多数 python 控制台应用程序一样,它使用 OptionParser 模块来获取参数。我现在使用 wxPython 为我的应用程序开发了一个 GUI,我想将两者集成。我希望我的应用程序既可以从控制台运行,也可以从操作系统的 UI 运行。当从控制台调用它时,它作为控制台应用程序运行,当它在操作系统的 UI 中双击时,它作为 GUI 应用程序运行。我怎么能做这样的事情?有人可以告诉我__main__块应该是什么样的片段吗?

万分感谢。

4

2 回答 2

2

您可以将 args 传递给应用程序然后使用 arg 解析器吗?

if __name__ == "__main__":
  from  optparse import OptionParser

  parser = OptionParser() 
  parser.add_option("-g","--gui_mode",
                    dest="guimode",
                    help="start program in gui mode",
                   action="store_true")

  (options,args) = parser.parse_args()

  if (options.guimode):
      print "start wx app"
  else:
      print "start cmd line app"

编辑: 对不起,误读,我以为你想从另一个 Wx 应用程序开始。而不是来自“OS UI”,我不知道有一种很棒的跨平台方式来做到这一点。问题是在windows.py文件中通常与python.exe.pyw文件类似,但没有控制台窗口。
所以你实际上必须修改操作系统来支持这种行为。例如,您可以创建一个快捷方式(在 windows/gnome/kde 中),该快捷方式使用 --gui_mode 启动程序,或者使用 *nix OS 中建议的 @Austin 之类的机制。如果您正在安装应用程序,disttools 可以自动执行其中一些内容

于 2010-05-13T15:26:16.797 回答
0

尝试:

import os
print os.environ

并在您通过双击执行脚本时将 os.environ['TERM'] 输出到 tkinter 窗口。

对我来说,它是“xterm-color”。

您使用什么操作系统?您如何确保双击 .py 文件将导致其执行?

于 2010-05-13T15:43:51.293 回答