【问题标题】:"IronPython + .NET" vs "Python + PyQt". Which one is better for Windows App development?“IronPython + .NET”与“Python + PyQt”。哪个更适合 Windows 应用程序开发?
【发布时间】:2011-02-09 01:34:51
【问题描述】:
我是使用 Python 的新手。我想使用 Python 开发 Windows GUI 应用程序。经过一番研究,我发现我有两个选择:-
- IronPython + .NET 框架
- Python + PyQt
我可以知道哪一个更适合 Windows 应用程序开发吗?哪个选项具有更多功能(例如数据库支持等)?
除了.NET 支持之外,IronPython 和 Python 之间有什么大的区别吗?哪一个更适合我?
谢谢。
帕特里克.L
【问题讨论】:
标签:
.net
python
user-interface
ironpython
pyqt
【解决方案1】:
我也遇到了同样的问题,但怀着疑虑,我决定使用 IronPython/C#/.Net。我喜欢 Qt,但是当它被卖给诺基亚时,我感到很冷淡,因为我只是不确定诺基亚拥有 Qt 的目标是否符合我对 Windows UI 的需求。也就是说,诺基亚通过将单独的平台许可证合并为一个许可证并放弃 GPL 许可或 LGPL 来采取一些积极举措。
从技术上讲,Qt 设计良好,但严重依赖于难以调试的 C# 宏。我不确定为什么。 Qt 最好的一点是它是开源的。如果需要,您可以修复它。我没有直接使用 PyQt 的经验,但它已经存在了很长一段时间。
.Net 是 .Net,与 Microsoft 一样,它是一个移动的目标。您将牺牲速度以简化编码。 IronPython 小组似乎不错,但我不确定微软是否有承诺。尽管计划听起来不错,但尚不支持 Visual Studio。毕竟,MS 只关心他们是否拥有一切,而 Python 并非如此。我真正期望的是 MS 将创建 C#、解释器和所有的动态版本,并告诉所有 Python 程序员它更好、受支持并与 .Net 很好地集成。然后,他们将像对待 Java 一样,通过他们巨大的力量来碾压 Python。
祝你好运。这是一个重大决定。
【解决方案2】:
根据我对 PyQt(作为 Qt 的接口)和 IronPython(作为 WinForms 的接口)的使用,包是混合的。
两者基本上都是底层平台的“绑定”。 PyQt 实际上是从 Qt 的 API “自动生成”的,并且由于在 Linux 上的大量使用,因此作为包装器稍微“成熟”。
IronPython 更深入一些,似乎“重新装箱”了系统对象,在 cPython 和 .Net 库(gzip、zip、子进程等)之间存在小的未填充间隙。
在这两种情况下,您都需要通过 Python 查看工具包,并告诉自己是否喜欢该工具包。 python 所做的只是将工具包的 API 重新打包到对象中。再次,忘记 Python 方面。看看底层的工具包 API,想想你是否可以接受它。
我个人觉得 Qt 的 API 的 C++ 特性太不符合 Python 风格,我对此并不满意。 C# 和 Python 非常相似,如果你从 C# 中删除花括号和类型声明,你将不知道它是 C# 还是 Python。因此,对于 Python 程序员来说,MSDN 和其他地方提供的基于 C# 的 .Net API、代码和示例只需稍作调整即可立即适用。
最后,更正确的比较应该是 PyQt(cPython 的 Qt 绑定)和 Win32py(cPython 的 Windows ABI 绑定)。 IronPython 几乎是在不同平台上对相同语言的重新发明,但随之而来的所有问题(缺乏功能)。
【解决方案3】:
首先,有不止 2 个选项(python 有更多的 GUI 库,你无法动摇),但让我们先看看你的前提。 “更好”是主观的问题:“你想学什么?”
如果目标是 Windows GUI 应用程序开发,那么我会选择 .Net。 .Net 备受推崇,.Net 程序员有很多工作要做,而且它以 Windows 为中心(是的,我知道有 Mono,但仍然如此)意味着您不需要考虑三组以上用户期望的细节。
如果目标是学习广泛使用的 Python 库和技术,我会选择 PyQt(最近也是这样做的)。它是跨平台的,备受推崇,并且拥有庞大的社区。但是您失去了作为该项目的一部分学习 .Net 平台的机会。
如果你的目标是学习,我认为你不能放松任何一种方式。如果您的目标是完成某件事,请考虑该项目的长期计划以及它的长期发展方向。您是否想要很好地集成到 Windows 用户界面中并使用标准小部件的东西?您想要将来可以轻松适应其他平台的东西吗?
【解决方案4】:
PyQt 是一个很棒的库,但 .NET 是适用于 Windows 的最佳方式。那是因为您可以使用 C# 能够在 Python 中使用的任何 GUI 控件。此外,除了 WinForms,IronPython 还可以用来创建 WPF 应用程序,看起来不错。
主要区别在于功能,PyQt的跨平台功能更多,而.NET在Windows中绝对有优势。
【解决方案5】:
我没有在 .NET 中使用 IronPython,但我已经写了很多 PyQt 代码。根据我的经验,PyQt 是一个很棒的库。它是对 Qt 的很好执行的绑定,Qt 是一个非常知名且广泛使用的库。
由于您编写的是标准 Python,您可以享受所有 Python 标准库,它为您提供了大量功能,此外还有几个使用 PyQt 导入的有用 Qt 模块。编写 PyQt 代码是高效的,而且 GUI 非常漂亮且响应迅速。而且您不能忽视可移植性的好处:只需进行最细微的修改(如果有的话),您就可以在 Linux 上运行这些程序,它们可以正常工作。