Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该嵌入或扩展python来创建高质量、高速的GUI程序吗?_Python_C_User Interface_Cross Platform - Fatal编程技术网

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

我应该嵌入或扩展python来创建高质量、高速的GUI程序吗?,python,c,user-interface,cross-platform,Python,C,User Interface,Cross Platform,我正试图找到一种快速开发(或者说最终达到我可以快速开发的程度)非常漂亮的跨平台GUI桌面应用程序的方法,这些应用程序在磁盘和内存中占用的空间非常小,启动速度非常快(例如,比裸骨wxPython窗口快得多)(举个好例子,看看TextEdit在OSX下的启动速度。这是我想要的GUI应用程序的启动速度)、轻松部署以及与操作系统的良好交互(Gimp和Gedit以及其他各种开源、跨平台的应用程序表现出我非常讨厌的各种行为,这取决于平台,尤其是在OSX上),而不花任何钱。(嘿,别笑了!=P) 我不满意wxW

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

我不满意wxWidgets、Qt、SDL以及迄今为止我尝试过的所有其他东西,因此我开始在每个平台上使用本机工具(XCode/ObjC/Cocoa/OpenGL、MSVC/Win32/DirectX、gcc/GTK/OpenGL)编写本机GUI代码(特别是与操作系统窗口系统交互的部分),然后尝试用Python编写尽可能多的程序其余部分

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

所以我考虑在每个平台上创建一个类似于“shell”的程序,并嵌入python,类似于Sublime Text 2的方式

我不喜欢第一次启动任何python程序时出现的启动缓慢。我希望这是编译成字节码的结果,我可以在我的应用程序中包含python模块的预编译版本,但从实验来看,情况似乎不是这样。似乎python第一次运行s(自上次系统重新启动后),加载了一个共享库/dll或其他东西。因此,这就是我考虑嵌入Python的原因之一——我想知道在嵌入/调用Python时是否有一些选项可以帮助减少启动延迟。或者,如果最坏的情况是,在嵌入的情况下,我可以不使用Python启动,然后在需要时启动Python,asynchronously(不在主线程中),在应用程序已经启动之后

有没有办法减少已部署python程序的首次启动延迟(即,程序包中包含intepreter版本的程序..也许解释器可以使用我没有尝试过的开关进行编译)

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


希望任何python gui程序都能像TextEdit一样快速启动或占用空间小,这是完全不现实的吗?

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

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

333MhzCPU上运行,CPU容量小于128MB和一些随机的PCI图形卡,我成功地做到了这一点:

(大约有几十万颗恒星,比例:可以,几百颗行星也有一艘可以在太空航行的飞船。这是一个早期开发视频,我没有时间完成)


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

哇,我很惊讶我以前没有遇到过这一点,谢谢您指出。问题:-运行速度看起来不错,但启动速度有多快?-您觉得如何设置打包应用程序图标?-如何在OSX下设置打包初始应用程序菜单?-在OSX下是否缓慢且滞后?在运行时设置应用程序图标不会为桌面链接生成图标,而使用空白初始菜单之前给我造成了行为问题。一张列表海报说在OSX下缓慢且滞后,这就是我的问题使用SDL也有经验。也许Pyglet和SDL使用相同的接口。启动速度(从.pyc运行时)也很好,至少这是我处理它的经验。假设你知道Python语言本身的主要陷阱,你可以毫无问题地摆脱即时创业者。使用UPX,引用pyinstaller-“在Windows和Linux上,UPX都能提供惊人的压缩效果——在软盘上安装有用的东西的日子不会永远过去!”:)关于如何在GUI中设置图标的大量信息,否则只需使用您的打包应用程序选择的图标(我使用pywininstaller或py2exe/py2app)OSXSo speed中的.Pyglet cococoa在OSX中不应该是一个问题,因为它使用OSX的本机渲染替代方案。此外,Pyglet使用OpenGL C/C++库以获得最佳的速度和渲染效果。Pyglet还支持多个监视器,许多框架都忘记了包括这些监视器(在Windows中拖动3D渲染窗口在多个监视器中可能是一项可怕的任务,因为Python(例如wxPython)通常会在启动它的屏幕上启动渲染窗口,而不必在其他监视器上渲染应用程序)。我相信,Pyglet有很多好处