与其他在Perl中创建GUI的解决方案相比,Tk模块有哪些缺点?
答案 0 :(得分:12)
我最近参观了Perl的各种gui模块,这是我的总结(免责声明:最终我发现现有模块都没有满足我的需求,所以我开始编写自己的gui工具包)。
Tk - 非常适合使用,界面非常棒。 gui本身看起来有点过时,并没有利用任何操作系统的本机小部件(如filepickers)。在大多数系统上,它需要安装C编译器。
Wx - 难以使用,无法使用界面。大型程序几乎需要一个gui构建器来跟踪所有内容。对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设计的嵌套标签。它当然可以用它来编写功能齐全的单窗口应用程序。
希望这可以帮助您找出最适合您项目的工具包。
答案 1 :(得分:2)
Tk在很长一段时间内还没有开发出来。 ActiveState现在推荐使用他们的Tkx工具包进行开发,该工具包在TclTk上提供了一个薄层。这意味着主题小部件是可能的。但是,与许多其他GUI工具包相比,TclTk仍然相当原始。
我没有尝试过XUL:Gui,但这似乎是要走的路。