适用于控制台和gui模式的应用程序

时间:2010-05-13 14:28:26

标签: python user-interface wxpython console-application optionparser

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

非常感谢。

2 个答案:

答案 0 :(得分:2)

你可以将args传递给app然后使用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 App开始。而不是来自“OS UI” 我不知道这是一个很好的跨平台方式。问题是在windows .py文件中通常与python.exe相关联.pyw文件类似,但没有控制台窗口。
因此,您实际上必须修改操作系统以支持此行为。例如,您可以创建一个快捷方式(在windows / gnome / kde中),该快捷方式使用--gui_mode启动程序或使用* nix操作系统中建议的@Austin等机制。 如果您要安装应用程序,可以通过disttools自动完成其中一些内容

答案 1 :(得分:0)

尝试:

import os
print os.environ

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

对我来说,这是'xterm-color'。

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