【发布时间】:2012-09-26 21:33:00
【问题描述】:
我最近开始使用 Tkinter,现在我想尝试 wxPython,但我有一个主要问题:在 Mac 上,Python 应用程序启动并运行 gui。我正在使用鸭嘴兽,所以 window 已经有一个可以“附加”到自己的应用程序。为什么它也需要 Python.app?有没有办法解决这个问题?这种方法感觉就像在 Mac 上的 X11 内的 Wine 中运行 Windows 应用程序一样“组合在一起”。
【问题讨论】:
我最近开始使用 Tkinter,现在我想尝试 wxPython,但我有一个主要问题:在 Mac 上,Python 应用程序启动并运行 gui。我正在使用鸭嘴兽,所以 window 已经有一个可以“附加”到自己的应用程序。为什么它也需要 Python.app?有没有办法解决这个问题?这种方法感觉就像在 Mac 上的 X11 内的 Wine 中运行 Windows 应用程序一样“组合在一起”。
【问题讨论】:
您为这项工作使用了错误的工具。 Platypus 的全部意义在于它可以将非 GUI 脚本转换为 GUI 应用程序。 “app”和“window”对脚本是不可见的,它认为它只是通过 sys.argv 接收内容并写入 stdout。
Platypus documentation 明确表示 Platypus “并非旨在用于创建具有复杂用户交互的大量 Mac OS X 应用程序”。
wxPython 文档到处都说您应该使用 py2app(例如,http://wiki.wxpython.org/Optimizing%20for%20Mac%20OS%20X)在 Mac 上构建 wx 应用程序。 (您可能会发现一些过时的文档提到了 BundleBuilder,但请忽略它。)
如果你真的知道自己在做什么,也许你可以忽略两个不同包的文档,并强迫它们一起做你想做的事,否则,为什么还要尝试呢?
如果您想打包一个能够识别其 GUI 的 GUI 应用程序(无论是 TkInter、wx 还是其他),那么执行此操作的方法是使用 py2app。无需学习本教程之外的任何内容,您就可以将 wxPython(或 PyQt 或 TkInter 或其他)脚本转换为可双击的 Mac 应用程序。而且您几乎可以根据需要自定义它(导出 UTI,将图标分配给文件类型,......)。 wxPython 的文档已经告诉你怎么做。
顺便说一句,我怀疑这里的部分问题是您不知道 OS X 应用程序和 Unix 可执行文件之间的区别。但如果你坚持使用跨平台工具包(如 wx)和 py2app,你可能会侥幸成功。
【讨论】: