perl - Perl Tk 模块的缺点是什么?

标签 perl user-interface tk

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

最佳答案

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

Tk - 体面的工作,界面非常糟糕。 gui 本身看起来有点过时,并且没有利用任何操作系统的 native 小部件(如文件选择器)。在大多数系统上,它需要安装 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...)。其次,程序的结构反射(reflect)了显示的结构。

所以我开始了 XUL::Gui 的工作,并且进展顺利。它是纯粹的 Perl,并且只依赖于核心模块以便于安装。它有一个外部要求,即安装最新 (3+) 的 Firefox 副本。它使用熟悉的 Web 开发设计模式和 CSS 样式的嵌套标签。它肯定处于您可以使用它编写功能齐全的单窗口应用程序的水平。

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

关于perl - Perl Tk 模块的缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593336/

相关文章:

ubuntu - 为什么链接器找不到 tcl/tk?

regex - 在 perl 中,我如何获得所有匹配的结果/g?

ios - XCTest UI 测试 : why does my attempt to swipe the last table cell upwards instead slide up the brightness and volume panel?

perl - 如何回退到核心对象字符串化?

wpf - 使用 XAML/WPF 实现复杂曲线编辑器的策略

python - 使用 IronPython 和 Visual Studio 2010 进行 GUI 开发

python - 是否可以获取 tkinter 消息框图标图像文件?

python - Tkinter按钮出现在其他对象下方

perl - 如何对 Perl 哈希值进行排序并相应地对键进行排序(可能在两个数组中)?

ios - 无法将 base64 编码的图像添加到 vCard