我真的很喜欢Perl/Tk
,但我认为它是 DOA。我认为Tcl::Tk
并且Tkx
是更好的解决方案。假设我放弃Perl/Tk
。是“最受支持”的路线Tcl::Tk
(自 2007 年以来尚未更新,似乎无法联系到其作者),还是Tkx
?这些中的任何一个是否被积极使用/支持?
3 回答
在底层,Tcl::Tk和Tkx都使用Tcl模块作为 Tcl/Tk 的桥梁。不同之处在于它们提供给 Perl 的 API。
Tkx 是由 ActiveState 开发的,他们在 GUI 中使用它作为他们的工具。(例如PPM)它被积极使用,虽然很难说有多广泛。它也受到支持,但因为它是 Tcl 上如此薄的一层,所以支持的东西并不多。从某种意义上说,这是一件好事——几乎没有什么可以改变或破坏的——但它确实给人一种废弃软件的印象。
Tcl::Tk 最初是作为一个辅助项目来证明 API 与 Perl/Tk 的兼容性是可能的。我喜欢这个想法——只需要更改并获得 Tcl/Tk 的新版本(如 tile(主题)支持)的好处会use Tk
很棒use Tcl::Tk
。不幸的是,它还没有。似乎有一些工作正在完成,但不是很多。它真的可以使用更多的开发人员。
就个人而言,我使用 Tkx。如果您有使用 Perl/Tk 开发的经验,那么过渡不会太痛苦,但我认为这将是一个困难的起点。最糟糕的是,您需要参考Tcl/Tk 文档才能使用它。如果您了解 Tcl,那就太好了,因为 Perl 的桥接带来的惊喜很少,但如果您不了解,从不熟悉的语言翻译会很尴尬。
我使用wxPerl取得了不错的成绩,这里有一篇关于 O'Reilly 的短文
注意:我的目标是 win32,这是大约 5 年前的事了。
(披露:我是 Tcl::pTk 和 Tkx 的维护者,并已向 Perl/Tk、Tcl/Tk 和 Tcl::Tk 提交过贡献。)
2019 年更新:
Perl/Tk在过去几年中已经发布并从那时起进行了开发,但维护者承认没有足够的时间进行重大改进,例如合并 Tcl/Tk 8.5+ 的更改。任何想要在较新的 Tcl/Tk 版本中使用特性或改进的人都可能有兴趣使用 Tcl/Tk“包装器”模块之一(它提供从 Perl 访问完全独立的 Tcl/Tk 安装,而不是将所有 Tk在单个 Perl 模块中)。
如果您正在开发一个新项目并且喜欢 Perl/Tk 语法,那么您可能会觉得Tcl::Tk 没问题,它是一个轻量级的包装器,它使用类似 Perl/Tk 的语法,同时也允许使用 Tcl/Tk 语法。Tcl::Tk 在过去一年中进行了一些维护。
然而,如果你有一个现有的 Perl/Tk 程序,你可能想试试Tcl::pTk。它基于 Tcl::Tk,但强调与现有程序中的 Perl/Tk 语法的兼容性。Tcl::pTk::TkHijack模块通过截取
use Tk;
语句使尝试 Tcl::pTk 变得相当容易。Tcl::pTk 仍在进行中,但在不同的程序中尝试它有助于发现还有哪些需要改进的地方。或者,如果您不熟悉 Perl/Tk,更熟悉实际的 Tcl/Tk 语法,或者熟悉语言的包装器(例如 Python 的 Tkinter),那么更好的选择可能是 Tkx。正如Micheal Carman 的回答所指出的,Tkx 自 2010 年以来没有进行太多维护,但主要是因为它不需要太多;随着对 Tcl/Tk 的不断改进,Tkx 通常可以自动利用它们。TkDocs.com上与语言无关的教程提供了 Tkx 语法示例。
我去年发现了 Tcl::pTk,并从那以后成为了它的维护者。我主要使用它来使用 macOS 的原生 aqua UI(而不是像 Perl/Tk 那样使用的 XQuartz),这也是少数其他活跃用户也报告使用它的原因。