2010-04-07 51 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