同时具备控制台和GUI模式的应用程序
我有一个用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自动化处理。