2010-04-17 124 views
7

我是使用Python的新手。我想用Python开发Windows GUI应用程序。经过一番研究,我发现,我有两个选择: -“IronPython + .NET”vs“Python + PyQt”。哪一个更适合Windows应用程序开发?

  1. 的IronPython + .NET框架
  2. 的Python + PyQt的

我可以知道哪一个是Windows应用程序更好的发展?哪个选项具有更多功能(例如数据库支持等)?

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

谢谢。

Patrick.L

回答

3

首先,有很多比2个选项(Python有更多的GUI库比你都不能动摇的棍子)多,但让我们去你的前提下,为一分钟。 “更好”是主观的问题:“你想学什么?”

如果目标是Windows GUI应用程序开发,那么我会用.Net。 .Net受到很好的尊重,.Net程序员有很多工作,并且它是以Windows为中心的(是的,我知道那里有Mono但仍然),这意味着你并没有试图去考虑三组用户期望的细节。

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

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

1

我还没有用.NET与IronPython,但我写了很多PyQt代码。根据我的经验,PyQt是一个伟大的图书馆。这是一个很好的绑定到Qt,这是一个非常知名和广泛使用的库。

由于它是您正在编写的标准Python,除了使用PyQt导入的几个有用的Qt模块之外,您还可以享受所有Python标准库,该库提供大量功能。编写PyQt代码是富有成效的,并且图形用户界面出色而且响应迅速。你不能忽视可移植性的好处:只需稍作修改,如果有的话,你可以在Linux上运行这些程序,他们将只工作

3

PyQt是一个伟大的库,但.NET是最好的方式去Windows。这是因为您可以使用C#可以在Python中使用的任何GUI控件。此外,除了WinForms之外,IronPython还可用于创建WPF应用程序,这看起来不错。

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

5

我面临同样的问题,并担心,决定去与IronPython/C#/。净。我喜欢Qt,但当它卖给诺基亚的时候却冷得要命,因为我不确定诺基亚拥有Qt的目标是否符合我对于Windows UI的需求。也就是说,诺基亚通过将单独的平台许可证合并为一个许可证并取消GPL许可或LGPL,取得了一些积极举措。

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

.net是.net和往常一样的微软,一个移动的目标。为了便于编码,您将牺牲速度。 IronPython集团看起来不错,但我不确定微软的承诺是否存在。尽管计划听起来不错,但Visual Studio支持还没有实现。毕竟,MS只关心他们是否拥有所有的东西,而Python并非如此。我真正期望的是,MS将创建一个动态版本的C#,解释器和所有的程序,并告诉所有Python程序员它更好,支持并且与.Net完全集成。然后,他们将像他们对Java所做的那样,在他们背后压倒Python。

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

4

每当我使用PyQt(作为Qt的接口)和IronPython(作为WinForms的接口)时,这个包混在一起。

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

IronPython稍微深入一点,似乎将cPython和.Net库(gzip,zip,subprocess等)之间空隙不大的系统对象“重新组合”。

在这两种情况下,您都需要通过Python浏览工具包,并对自己说如果您喜欢该工具包。所有的python正在做的是重新打包工具包的API到对象。再次,忘记Python方面。看看底层的工具包API,并自己思考一下,如果你能忍受这一点。

我个人发现Qt的API的C++性质太不合格,不能满足它。 C#和Python非常相似,如果你从C#中删除curlies并输入声明,你就不会知道它是C#还是Python。因此,对于Python程序员来说,基于C#的.Net API,MSDN和其他地方提供的代码和示例只需稍作调整即可应用。最后,PyQt(用于cPython的Qt绑定)和Win32py(用于cPython的Windows ABI绑定)之间的比较更加正确。 IronPython几乎是在不同的平台上对同一种语言进行的改造,所有的问题(缺乏功能)都伴随着这一点。

相关问题