关于使用Python进行GUI编程的当前状态的问题

2024-09-29 02:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近做了一些工作,修改了一个使用wxPython小部件的pythongui应用程序。在过去的六、七年里,我曾尝试过Python,但这是我第一次用gui做任何工作。我对使用Python进行gui编程的现状感到非常失望。我非常喜欢Python语言本身,它与我习惯的Delphi/ObjectPascal编程相比是一个有趣的变化,对于一般用途的编程任务来说,无疑是一个巨大的生产力提高。我想把一切都转到Python。在

但是wxPython与Delphi的VCL或.NET的WinForms相比是一个巨大的倒退。虽然Python本身提供了很好的生产力收益,但wxPython在一个比VCL更低的抽象级别上使用。例如,我浪费了很多时间试图让wxPython列表对象按照我想要的方式运行。添加可排序列涉及到几个代码密集的步骤,一个是创建和维护提供实际排序顺序的阴影数据结构,另一个是使在列标题中显示图形排序方向三角形成为可能,还有几个我不记得了。所有这些容易出错的步骤都可以通过使用Delphi网格组件设置属性值来完成。在

我的结论是:虽然Python通过提高许多通用代码的抽象级别来提高生产率,但wxPython的抽象级别比Delphi可用的gui工具低几个级别。最终结果:用Delphi编程的gui比用Python编写的gui编程快得多,而且用Delphi生成的ui仍然更加精美和功能齐全。在我看来,说delphigui编程在1995年比2009年用wxpythonis进行python gui编程更先进并不夸张。在

我对其他python gui框架做了一些研究,结果发现没有任何一个框架比wxPython更好。我还对wxPython的guiformbuilders做了一些最小限度的调查,这会使事情变得更好一些。但据大多数报道,这些解决方案都是有缺陷的,即使是一个优秀的formbuilder也无法解决我对wxPython的主要抱怨,因为wxPython的特性较少,而且通常需要您在比我习惯于使用Delphi的VCL的抽象级别低得多的抽象级别上进行gui编程。对于习惯于Delphi或.NET的人来说,快速研究所建议的pythongui-dev解决方案(http://wiki.python.org/moin/GuiProgramming)确实有些令人沮丧。在

最后,我有几个问题。在

首先,我是不是遗漏了什么?有没有一些Python的gui开发解决方案可以与VCL或WinForms编程相比?我不一定在乎它是否完全符合德尔福的VCL。我只是在找一个在同一个联盟里的东西。在

第二,IronPython会是发展的方向吗?我尽量避免喝.NETKoolaed,但也许IronPython给了我一个最终放弃的理由。即便如此,IronPython是否与WinForms完全集成,或者我是否需要用c#或vb.net?在我看来,SharpDevelop和MonoDevelop确实是这样(也就是说,IronPython不能用于构建设计时gui)。做VS.NET公司将IronPython与gui构建完全集成?在

在我看来,如果Python出现了一些很棒的新gui构建解决方案,Python可以以类似于visualbasic在1990年代早期所做的那样“接管世界”。只有这次使用Python,我们才有了一个全新的快速、跨平台和开源gui编程的范例。公司不会把它吃掉吗?是的,我不知道这些天来Python是一个伟大的解决方案。但我不要看到gui编程正在消失,我想要一个很好的现代的、开源的、高层次的解决方案。在


Tags: 代码net排序编程wxpython步骤gui解决方案
3条回答

似乎你的抱怨是关于wxPython,而不是Python本身。试试pyQt(还是qtPython?)在

但是,WxPython和PyQt都是Python绑定到C/C++(分别)库,它和原文件一样低(概念上)。在

但是,Qt远远优于wx

您可能想看看Jython(javavm上的Python)。它非常类似于铁蟒,你可以在.netkoolaid之前使用它。在

PyQt是Nokia对Qt-SDK的绑定,PyQt本身由一家名为RiverBank的公司提供。在

如果许可证对你不重要,你可以使用GPL下的PyQt,否则你将支付一些钱购买商业许可证。在

PyQt现在正在绑定qt4.4。在

Qt不仅仅是GUI,它是一个完整的C/C++ SDK,它帮助网络、XML、媒体、数据库和其他东西,PyQT将这些都传递给Python。在

使用PyQt,您将使用Qt设计器,并通过简单的命令行将.ui文件转换为.py文件。在

你会在网上找到很多关于PyQt的资源,以及来自不同社区的良好支持,甚至出版了关于PyQt的书籍。在

很多建议认为RiverBank别无选择,只能发布下一个版本,它将依赖于LGPL下的qt4.5,我们正在等待:)。在

另一个解决方案是使用javaswing的Jython,非常容易编写(特别是在jdk6下),但是在internet上没有足够的资源。在

相关问题 更多 >