2010-04-07 69 views
3

與其他解決方案相比,Tk模塊在Perl中創建GUI有什麼缺點?Perl Tk模塊的缺點是什麼?

+0

爲什麼你只關心缺點?相對於什麼?另請參閱http://stackoverflow.com/questions/1249186/should-i-use-perl-tk-tcltk-or-tkx-for-a-perl-gui – 2010-04-07 14:57:50

+0

我希望有人會爭辯我做perl-gui -programming。 – 2010-04-07 16:44:16

回答

12

我最近瀏覽了Perl的各種GUI模塊,這裏是我的總結(免責聲明:最終我發現現有的模塊都不符合我的需求,所以我開始編寫我自己的GUI工具包)。

Tk的 - 有體面的工作和接口是非常Perl。 GUI本身有點過時,並沒有利用任何操作系統的原生小部件(如filepickers)。在大多數系統上,它需要安裝一個C編譯器。

蠟質 - 很難用,未Perlish的接口工作。大型項目幾乎需要一個gui builder來跟蹤一切。對os級別小部件的支持是混合的。比Tk IMO更好看。涉及編譯,需要安裝幾個庫,可能很難在Windows上運行。程序集非常程序化,並且不會完全映射到程序的實際外觀。

Qt的 - 去年我看了這個模塊是或多或少遺棄,只支持QT3。我沒有嘗試安裝它,但我想它需要一個編譯器。

Prima - 與Tk類似,它具有過時的外觀。需要一個編譯器。

W32 :: GUI - 我排除了這一可能性的早期,因爲它不是跨平臺的。

XUL :: Node/POE :: XUL :: Node - 包含C代碼的相當重的依賴關係樹。似乎沒有維護,我有混合的經驗讓它安裝。 Windows是不行的,OSX是不行的,它在OpenSUSE上的功能有限。它也只支持XUL語言的一個子集。

我發現現有的gui工具包都不能讓您輕鬆地將應用程序分發給最終用戶。可以期待程序員跳過解決庫依賴和編譯代碼的束縛,但最終用戶不會那樣做。所以我的第一個要求是成爲純Perl。其次,幾乎所有現有的gui工具包都迫使你以非常程序化的方式工作:創建一個容器。爲容器創建一個包裝器。創建一個對象。在該對象上設置屬性。將對象添加到打包器。運行打包器來填充容器對象。重複。

相反,我發現嵌套的設計(如HTML)是容易按照有兩個原因。首先,因爲對象是嵌套的,所以不需要命名所有內容(label_456,label_457 ...)。其次,程序的結構反映了顯示內容的結構。

所以我開始了XUL::Gui的工作,它的進展相當順利。它是純粹的Perl,只依靠核心模塊來簡化安裝。它有一個外部要求,就是安裝最近的(3+)Firefox副本。它使用熟悉的web開發設計模式,並使用CSS樣式的嵌套標籤。當然,您可以在其中編寫功能齊全的單窗口應用程序。

希望這可以幫助你找出哪些工具是最適合你的項目。

+0

通過使用這裏提到的二進制文件,你可以在Windows上安裝wxPerl而不會複雜化。http://www.wxperl.it/p/download.html – 2017-05-03 03:10:56

2

Tk在很長時間內還沒有開發出來。 ActiveState現在推薦使用Tkx工具包進行開發,該工具包提供了TclTk上的一個薄層。這意味着主題小工具是可能的。但是,與許多其他GUI工具包相比,TclTk仍然非常原始。

我還沒有嘗試XUL:Gui,但似乎要走的路。

+1

在Windows和OSX上,Tk(尤其是Ttk小部件)看起來確實非常好使用原生小部件。我們一直在研究如何在Linux上使用「本地」小部件,但問題是(顯然,根據Georgios Petasis最近的一份會議論文),即使在常見的度量標準GTK和Qt主題中存在一些相當普遍的問題那些。 – 2011-01-11 13:36:48

+0

我之所以說「native」是因爲Tk *是一個原生的X11工具包,並且在創建GTK或Qt之前就已經很好了。 – 2011-01-11 13:40:13

+0

這些天,Tk可能得不到很多發展,但至少它保持活力,並且仍然會安裝在大多數perl版本的系統上。 – 2013-07-17 13:40:10