我有一个 python 控制台应用程序。像大多数 python 控制台应用程序一样,它使用 OptionParser 模块来获取参数。我现在使用 wxPython 为我的应用程序开发了一个 GUI,我想将两者集成。我希望我的应用程序既可以从控制台运行,也可以从操作系统的 UI 运行。当从控制台调用它时,它作为控制台应用程序运行,当它在操作系统的 UI 中双击时,它作为 GUI 应用程序运行。我怎么能做这样的事情?有人可以告诉我__main__
块应该是什么样的片段吗?
万分感谢。
我有一个 python 控制台应用程序。像大多数 python 控制台应用程序一样,它使用 OptionParser 模块来获取参数。我现在使用 wxPython 为我的应用程序开发了一个 GUI,我想将两者集成。我希望我的应用程序既可以从控制台运行,也可以从操作系统的 UI 运行。当从控制台调用它时,它作为控制台应用程序运行,当它在操作系统的 UI 中双击时,它作为 GUI 应用程序运行。我怎么能做这样的事情?有人可以告诉我__main__
块应该是什么样的片段吗?
万分感谢。
您可以将 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 可以自动执行其中一些内容
尝试:
import os
print os.environ
并在您通过双击执行脚本时将 os.environ['TERM'] 输出到 tkinter 窗口。
对我来说,它是“xterm-color”。
您使用什么操作系统?您如何确保双击 .py 文件将导致其执行?