同时具备控制台和GUI模式的应用程序

2 投票
2 回答
1058 浏览
提问于 2025-04-15 22:40

我有一个用Python写的控制台应用程序。像大多数Python控制台应用一样,它使用OptionParser模块来接收参数。现在我用wxPython为我的应用程序开发了一个图形用户界面(GUI),我想把这两者结合起来。我希望我的应用程序可以同时从控制台和操作系统的界面运行。当从控制台启动时,它作为控制台应用运行;而当在操作系统的界面中双击时,它作为图形应用运行。我该怎么做呢?能不能给我一个__main__块的代码示例?

非常感谢!

2 个回答

0

试试这个:

import os
print os.environ

然后在你双击执行这个脚本的时候,让它把 os.environ['TERM'] 的内容输出到一个 tkinter 窗口里。

对我来说,它的值是 'xterm-color'。

你使用的是什么操作系统?你是怎么确保双击一个 .py 文件能让它执行的呢?

2

你能把参数传给应用程序,然后再用参数解析器吗?

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应用程序启动,而不是从“操作系统界面”启动。我不知道有什么好的跨平台方法来做到这一点。问题在于,在Windows系统中,.py文件通常是和python.exe关联的,而.pyw文件也是类似的,但它没有控制台窗口。
所以你实际上需要修改操作系统来支持这种行为。例如,你可以创建一个快捷方式(在Windows/GNOME/KDE中),用来启动程序并加上--gui_mode,或者像@Austin在*nix操作系统中建议的那样使用某种机制。安装应用程序时,有些事情可以通过disttools自动化处理。

撰写回答