2010-04-17 123 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幾乎是在不同的平臺上對同一種語言進行的改造,所有的問題(缺乏功能)都伴隨着這一點。

相關問題