我应该嵌入或扩展python来创建高质量,高速的GUI程序吗?

时间:2012-12-03 10:27:49

标签: python c user-interface cross-platform

我正试图找到一种快速开发的方法(或者最终达到我可以快速开发的地步)非常漂亮的跨平台GUI桌面应用程序,它在磁盘和内存中的占用空间非常小,启动速度非常快(例如,甚至比一个简单的wxPython窗口更快)(例如,看看TextEdit在OSX下启动的速度有多快。这是我想要的GUI应用程序的启动速度),轻松部署和交互非常以及操作系统(Gimp和Gedit以及其他各种开源,跨平台的应用程序展示了我真正讨厌的各种行为,取决于平台,尤其是在OSX上),而不花任何钱。 (嘿,别笑了!= P)

我对wxWidgets,Qt,SDL以及我迄今为止尝试的其他所有内容都不满意,所以我要在每个平台上编写本机GUI代码(特别是与OS的窗口系统交互的部分),使用本机工具(XCode / ObjC / Cocoa / OpenGL,MSVC / Win32 / DirectX,gcc / GTK / OpenGL),然后尝试用尽可能多的方式编写Python中其余程序。< / p>

我想过可能会编写一组共享库/ dll来处理问题GUI,然后用一组Python C扩展包装它们,但是在包装方面有一些技术挑战(菜单,应用程序图标,某些特定于操作系统的应用程序清单等),我不确定一般的启动速度和性能是否可以接受,具体取决于我正在编写的特定程序。

所以我想过可能在每个平台上创建一种“shell”程序,并嵌入python,类似于Sublime Text 2的方式。

我不喜欢第一次启动任何python程序时出现的启动缓慢。我希望这是编译到字节代码的结果,我可以在我的应用程序中包含python模块的预编译版本,但是从实验开始,似乎情况并非如此......似乎第一次python运行(自上次系统重启以来),加载了共享库/ dll或其他东西。所以这就是我想到嵌入Python的一个原因 - 我想知道嵌入/调用python时是否有一些选项可以帮助减少启动延迟。或者如果最糟糕的情况发生,在嵌入的情况下,我可以在没有Python的情况下启动,然后在应用程序启动后,异步地(不在主线程中)需要时启动Python。

有没有办法减少部署的python程序的第一次启动延迟(即,程序包的包含一个版本的解释器..也许解释器可以使用我没有尝试过的开关编译)?< / p>

嵌入python时有没有办法减少解释器加载/初始化延迟?

期望任何python gui程序像TextEdit那样快速启动或占用空间小是完全不现实的吗?

2 个答案:

答案 0 :(得分:2)

Pyglet

它没有变得更好,你将获得对所有Python版本的完全支持, 你负责你的GUI代码,事情的速度是惊人的。 您可以渲染数据块而不会出现明显的延迟!

333Mhz CPU上运行少于 128MB 以及一些随机的 PCI显卡我设法将其从帽子中拉出来:
http://www.youtube.com/watch?v=D7zFLQZxzcY
(大约有几千颗恒星,规模:能够,几百个行星也可以在一个可以在太空中航行的船上进行规模......这是一个我没有时间完成的早期开发视频)

在第一次运行之后(或者如果你将.py编译成.pyc)你将使用pyglet从你的GUI中获得很快的速度,但是你必须自己创建所有的输入和按钮。重写图形数据而不是界面代码。

答案 1 :(得分:0)

您可以在Windows平台上采用openoffice方式并编写一个只是尝试访问软件所需文件的启动器,这样它们最终会进入内存缓存,从而加快启动时间(但会创建无用的东西)缓存,以防用户不想打开你的程序。)