3

与在 Perl 中创建 GUI 的其他解决方案相比,Tk 模块有哪些缺点?

4

2 回答 2

12

我最近浏览了 Perl 的各种 gui 模块,这是我的总结(免责声明:最终我发现现有的模块都不能满足我的需求,所以我开始编写自己的 gui 工具包)。

Tk - 体面的工作,界面非常糟糕。gui 本身看起来有点过时,并且没有利用任何操作系统的本机小部件(如文件选择器)。在大多数系统上,它需要安装 C 编译器。

Wx - 难以使用,不易损坏的界面。大型程序几乎需要 gui 构建器来跟踪所有内容。对操作系统级别小部件的支持是混合的。比 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 样式的嵌套标签。它肯定处于您可以使用它编写功能齐全的单窗口应用程序的水平。

希望这可以帮助您找出最适合您的项目的工具包。

于 2010-04-07T16:06:41.553 回答
2

Tk 已经很长时间没有开发出来了。ActiveState 现在建议使用他们的 Tkx 工具包进行开发,该工具包在 TclTk 之上提供了一个薄层。这意味着主题小部件是可能的。但是,与许多其他 GUI 工具包相比,TclTk 仍然非常原始。

我还没有尝试过 XUL:Gui,但它似乎是要走的路。

于 2010-12-20T16:49:54.750 回答