“IronPython + .NET”与“Python + PyQt”。哪一个更适合Windows App开发?

时间:2010-04-17 02:52:08

标签: .net python user-interface ironpython pyqt

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

  1. IronPython + .NET Framework
  2. Python + PyQt
  3. 我是否知道哪一个更适合Windows应用程序开发?哪个选项有更多功能(例如数据库支持等)?

    除了.NET支持之外,IronPython和Python之间有什么重大区别吗?哪一个对我来说是更好的选择?

    谢谢。

    Patrick.L

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,并且怀着疑虑,决定选择使用IronPython / C#/ .Net。我喜欢Qt,但当它被卖给诺基亚时感到很冷,因为我不确定诺基亚拥有Qt的目标是否符合我对Windows用户界面的需求。也就是说,诺基亚通过将单独的平台许可证合并到一个许可证中,并将GPL许可证放弃到有利于LGPL,从而取得了一些积极的举措。

从技术上讲,Qt设计得很好,但很大程度上依赖于难以调试的C#宏。我不知道为什么。关于Qt最好的事情是它是开源的。如果需要,可以修复它。我没有PyQt的直接经验,但它已经存在了很长一段时间。

.Net与.Net一样,与微软一样,是一个不断变化的目标。您将牺牲速度以便于编码。 IronPython团队看起来不错,但我不确定微软的承诺是否存在。 Visual Studio支持还没有,尽管计划听起来不错。毕竟,MS只关心他们是否拥有所有东西,而Python并非如此。我真正期待的是MS将创建一个动态版本的C#,解释器和所有,并告诉所有Python程序员它更好,支持并与.Net完美集成。然后他们将通过他们相当大的重量来破坏Python,就像他们对Java所做的那样。

祝你好运。这是一个重大决定。

答案 1 :(得分:4)

根据PyQt(作为Qt的界面)和IronPython(作为WinForms的界面)的游戏,包包是混合的。

两者基本上都是底层平台的“绑定”。 PyQt实际上是从Qt的API“自动生成”的,并且由于在Linux上的重要用途,它作为包装器稍微“成熟”。

IronPython更深入,似乎是“rebo​​x”系统对象,cPython和.Net libs之间存在小的未填充空白(gzip,zip,subprocess等)。

在这两种情况下,您需要通过Python查看工具包,并且如果您喜欢该工具包,请告诉自己。所有python都在做的是将工具包的API重新打包到对象中。再次,忘记Python方面。查看底层的工具包API,并想一想你是否可以接受它。

我个人觉得Qt的API的C ++性质太过于非pythonic而不满意。 C#和Python是如此相似,如果从C#中删除curlies和类型声明,你就不会知道它是C#还是Python。因此,对于Python程序员来说,基于C#的.Net API,MSDN和其他地方提供的代码和示例都可以通过非常小的调整立即应用。

最后,在PyQt(cPython的Qt绑定)和Win32py(cPython的Windows ABI绑定)之间进行更正确的比较。 IronPython几乎是在不同平台上重新使用同一种语言,并伴随着所有问题(缺乏功能)。

答案 2 :(得分:3)

首先,有超过2个选项(python有更多的GUI库,而不是你可以动摇),但让我们继续你的前提一分钟。 “更好”的主观性引出了一个问题:“你想学什么?”

如果目标是Windows GUI应用程序开发,那么我将使用.Net。 .Net受到了很好的尊重,.Net程序员有很多工作,而且它以windows为中心(是的,我知道有Mono但仍然存在)意味着你不是要考虑三组+用户期望的细节。

如果目标是学习广泛使用的Python库和技术,我会选择PyQt(最近做过)。它是跨平台的,备受尊重的,并且拥有庞大的社区。但是你失去了学习.Net平台作为这个项目的一部分的机会。

如果您的目标是学习,我认为您不会失去任何一种方式。如果您的目标是完成某项工作,请考虑项目的长期计划以及项目的长期计划。你想要一些很好地集成到Windows用户界面的东西,并使用标准小部件吗?你想要一些可以在未来轻松适应其他平台的东西吗?

答案 3 :(得分:3)

PyQt是一个很棒的库,但.NET是Windows的最佳选择。这是因为您可以使用C#能够在Python中使用的任何GUI控件。此外,除了WinForms之外,还可以使用IronPython创建看起来不错的WPF应用程序。

主要区别在于功能,PyQt具有更多跨平台功能,而.NET绝对是Windows的优势。

答案 4 :(得分:1)

我没有将IronPython与.NET一起使用,但我已经编写了很多PyQt代码。根据我的经验,PyQt是一个很棒的图书馆。它是一个非常好的执行绑定到Qt,这是一个众所周知和广泛使用的库。

由于它是您正在编写的标准Python,除了使用PyQt导入的几个有用的Qt模块之外,您还可以享受所有Python标准库,它为您提供了大量功能。编写PyQt代码非常有效,并且GUI非常有效且响应迅速。而且你不能忽视可移植性的好处:只需要最微小的修改,如果有的话,你可以在Linux上运行这些程序,它们只是工作