"IronPython + .NET"和"Python + PyQt",哪一个更适合Windows应用程序开发?

8

我是一个新手,想使用Python开发Windows GUI应用程序。经过一些研究,我发现有两个选项:

  1. IronPython + .NET Framework
  2. Python + PyQt

请问哪个选项更适合Windows应用程序开发?哪个选项具有更多功能(例如数据库支持等)?

除了.NET支持之外,IronPython和Python之间是否有任何重大区别?哪个选项对我来说更好?

谢谢。

Patrick.L

5个回答

5
我遇到了同样的问题,最终我决定使用IronPython/C#/.Net,尽管有些犹豫。我喜欢Qt,但当它被出售给诺基亚时,我开始有所顾虑,因为我不确定诺基亚拥有Qt的目标是否与我需要的Windows UI一致。不过,诺基亚已经采取了一些积极的措施,将单独的平台许可证合并为一个许可证,并放弃GPL许可证,转而采用LGPL。
从技术角度来看,Qt设计得很好,但严重依赖难以调试的C#宏。我不确定为什么会这样。Qt最好的地方在于它是开源的。如果需要的话,你可以修复它。我没有直接使用PyQt的经验,但它已经存在了相当长的时间。
.Net就是.Net,通常情况下,Microsoft会不断变化。你会为编码的易用性而牺牲速度。IronPython团队似乎很不错,但我不确定Microsoft是否真正承诺支持它。Visual Studio的支持还不够完善,尽管计划听起来不错。毕竟,Microsoft只关心自己拥有的一切,而这并不适用于Python。我真正期望的是,Microsoft将创建一个动态版本的C#,包括解释器等,并告诉所有Python程序员它更好、支持更好,并且与.Net集成得更好。然后,他们将利用他们的重要影响力来粉碎Python,就像他们对Java所做的那样。
祝你好运。这是一个重大决定。

4
首先,有超过2个选项(Python有很多GUI库可供选择),但让我们暂且按照您的前提来看待。"更好"是主观的,这引发了一个问题:“你想学什么?”
如果目标是开发Windows GUI应用程序,那么我会选择.NET。.NET备受尊重,有很多.NET程序员的工作,并且它的以Windows为中心的本质(是的,我知道还有Mono,但仍然如此)意味着您不需要考虑三个或更多用户期望集的细节。
如果目标是学习广泛使用的Python库和技术,则我会选择PyQt(最近也这样做了)。它是跨平台的,备受尊重,并且拥有庞大的社区。但是,您将失去作为该项目一部分学习.NET平台的机会。
我认为,无论您的目标是学习还是完成任务,您都不会走错路。如果您的目标是完成某些事情,请考虑该项目的长期计划以及其在长期内的发展方向。您是否希望得到与Windows用户界面良好集成并使用标准小部件的东西?您是否希望未来可以轻松地适应其他平台?

4

根据我对PyQt和IronPython的使用(作为Qt和WinForms的接口),它们各有千秋。

两者都是基于底层平台的“绑定”。PyQt实际上是从Qt的API“自动生成”的,由于在Linux上被广泛使用,因此稍微更成熟一些。

IronPython则更深入一些,似乎用小的未填充间隙重新包装系统对象,cPython和.Net libs之间存在这种间隙(如gzip、zip、subprocess等)。

在这两种情况下,您需要查看Python到工具包中,并问自己是否喜欢该工具包。所有Python所做的就是将工具包的API重新打包到对象中。再次忘记Python方面。查看底层工具包API并问问自己是否可以接受它。

个人认为Qt API的C++特性太不符合Python风格,无法让人满意。C#和Python非常相似,如果从C#中删除花括号和类型声明,你甚至不知道它是C#还是Python。因此,对于Python程序员来说,基于C#的.Net API、代码和示例在MSDN和其他地方提供,几乎可以立即应用,只需要进行非常小的调整。

最后,更正确的比较应该是PyQt(cPython的Qt绑定)和Win32py(cPython的Windows ABI绑定)。IronPython几乎是在不同平台上重新发明了同一种语言,带有所有这些问题(缺少功能)。


3

PyQt是一个很好的库,但对于Windows系统来说,.NET是最好的选择。这是因为你可以在Python中使用任何C#可用的GUI控件。此外,除了WinForms,还可以使用IronPython创建外观漂亮的WPF应用程序。

主要区别在于功能方面,PyQt具有更多的跨平台功能,而.NET在Windows上明显更占优势。


1

我没有使用过IronPython与.NET,但是我已经编写了很多PyQt代码。从我的经验来看,PyQt是一个很棒的库。它是对Qt的非常好的绑定,而Qt是一个非常著名且广泛使用的库。

由于你是在编写标准的Python代码,所以你可以享受到Python标准库带来的许多功能,此外还有一些有用的Qt模块在PyQt中被导入。编写PyQt代码是非常高效的,GUI界面也很漂亮和响应迅速。而且你不能忽视移植性的好处:只需要最微小的修改,如果有的话,你就可以在Linux上运行这些程序,它们会正常工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接