我正在尝试找到一种方法来快速开发(或者更确切地说最终达到我可以快速开发的程度)非常漂亮的跨平台 GUI 桌面应用程序,它们在磁盘和内存中的占用空间非常小,启动速度非常快(快得多,例如,甚至比一个简单的 wxPython 窗口还要好)(作为一个很好的例子,看看 TextEdit 在 OSX 下的启动速度有多快。这就是我想要的 GUI 应用程序的启动速度),轻松部署,并与操作系统(Gimp 和 Gedit 以及其他各种开源、跨平台应用程序表现出我非常讨厌的各种行为,具体取决于平台,尤其是在 OSX 上)而无需花钱。(嘿,别笑了!=P)
我对 wxWidgets、Qt、SDL 以及迄今为止我尝试过的所有其他东西都不满意,所以我决定在每个平台上使用原生工具编写原生 GUI 代码(尤其是与操作系统的窗口系统交互的部分) (XCode/ObjC/Cocoa/OpenGL、MSVC/Win32/DirectX、gcc/GTK/OpenGL),然后尝试想出一些方法尽可能多地用 Python 编写程序的其余部分。
我考虑过可能编写一组共享库/ dll 来处理 GUI 问题,然后用一组 Python C 扩展包装它们,但是在打包时会遇到一些技术挑战(菜单、应用程序图标、某些特定于操作系统的应用程序清单等),并且我不确定启动速度和性能总体上是否可以接受,具体取决于我正在编写的特定程序。
所以我考虑过可能在每个平台上创建一种“shell”程序,并嵌入 python,有点类似于 Sublime Text 2 的方式。
我不喜欢第一次启动任何 python 程序时出现的启动缓慢。我希望这是编译为字节码的结果,并且我可以在我的应用程序中包含 python 模块的预编译版本,但是从实验来看,情况似乎并非如此.. 似乎任何 python 运行都是第一次(自上次系统重新启动以来),加载了共享库/ dll 之类的。所以这就是我考虑嵌入 Python 的原因之一——我想知道在嵌入/调用 python 时是否有一些选项可以帮助减少启动延迟。或者,如果最坏的情况发生,在嵌入的情况下,我可以在没有 Python 的情况下启动,然后在应用程序已经启动后,如果/当我需要时,异步启动 Python(不在主线程中)。
有没有办法减少已部署的 python 程序的首次启动延迟(即,程序包中包含解释器的一个版本。也许解释器可以用我没有尝试过的开关编译)?
嵌入python时有什么方法可以减少解释器加载/初始化延迟?
期望任何 python gui 程序能够像 TextEdit 一样快速启动或占用很小的空间是完全不现实的吗?