我应该使用Perl/Tk、Tcl::Tk还是Tkx来制作Perl GUI?

17

我非常喜欢Perl/Tk,但我已经认为它已经过时了。我认为Tcl::TkTkx是更好的解决方案。假设我放弃了Perl/Tk,那么"最受支持"的选择是使用Tcl::Tk吗?(该软件自2007年以来没有更新,其作者似乎无法联系)还是使用Tkx?这两个选项中是否有任何一个正在积极使用/得到支持?


2
如果你想采用Tcl::Tk,可以尝试这个链接:http://www.cpan.org/misc/cpan-faq.html#How_adopt_module - Nifle
3个回答

16

在底层,Tcl::TkTkx都使用Tcl模块作为到Tcl/Tk的桥梁。它们之间的区别在于它们向Perl提供的API。

Tkx由ActiveState开发,他们在其工具的GUI中使用它(例如PPM)。尽管很难说它有多广泛地被使用,但它仍在积极使用中。它同样得到了支持,但因为它只是一个薄薄的Tcl层,所以没有什么需要支持的。从某种意义上讲,这是一件好事情--几乎没有什么可以更改或破坏--但这确实给人留下了弃用的印象。

Tcl::Tk起初只是一个副业项目,旨在证明与Perl/Tk的API兼容性是可能的。我非常喜欢这个想法--如果只需要将use Tk替换为use Tcl::Tk,就可以获得像tile(主题)支持等更新版本的Tcl/Tk的好处,那将是非常棒的。不幸的是,它还没有到达这个阶段。似乎有一些工作正在进行中,但并不多。它确实需要更多的开发人员。

就我个人而言,我使用Tkx。如果你有Perl/Tk开发经验,过渡并不太痛苦,但我认为这将是一个很难开始的地方。最糟糕的部分是您需要参考Tcl/Tk文档才能使用它。如果您不熟悉Tcl,这会让人感到尴尬,因为通过桥接到Perl引入的惊喜很少,需要从一种陌生的语言进行翻译。


1
谢谢。我不介意帮忙(Tcl::Tk),但我给作者发了每个我能找到的电子邮件,都被退回了。他的维基已经消失了,他的网站也消失了,这很令人沮丧。而且谷歌也没有太多帮助。 - xcramps
1
如果你想采用Tcl::Tk,可以尝试这个链接:http://www.cpan.org/misc/cpan-faq.html#How_adopt_module - Nifle
1
@xcramps:您可以通过向tcltk-subscribe@perl.org发送邮件来加入邮件列表。我偶尔在那里看到Vadim。 - Michael Carman
1
我最近开始使用Tkx,希望这能使它不太被遗弃。 - chrstphrchvz

8

我曾经使用过wxPerl,效果不错。这里有一篇简短的文章在O'Reilly上介绍(链接)

注意:当时我是针对win32平台进行操作的,这已经大约5年前的事情了。


我认为这对回答所提出的问题没有任何帮助。它甚至不能回答旁及问题,即应该使用什么工具包,因为你的答案基于一个快速发展的技术上五年前的信息。 - Bryan Oakley
2
@Bryan:由于Gabor、Adam和其他人为构建Padre(一个大型wxPerl应用程序)所做的努力,现在wxPerl比5年前更加相关。 - dolmen
@dolmen:这可能是真的,但问题特别涉及Tk,所以我说我不认为答案有帮助。当有人问“哪个工具更好”或“是否有其他选择”时,我完全赞成发布其他选项,但这不是问题。 <耸肩> 我很高兴听到wxPerl的存在和相关性。 - Bryan Oakley

3

(声明: 我是Tcl::pTk和Tkx的维护者,也曾向Perl/Tk、Tcl/Tk和Tcl::Tk提交过贡献。)

2019年更新:

Perl/Tk在过去几年中已经发布了版本,并有开发,但维护者承认没有足够的时间进行重大改进,比如将Tcl/Tk 8.5+的更改合并到其中。任何想要使用较新的Tcl/Tk版本的特性或改进的人可能会对使用其中之一的Tcl/Tk“包装器”模块感兴趣(这些模块提供对一个完整的单独的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的答案所指出的那样,自2010年以来,Tkx没有得到很多维护,但主要是因为它不需要太多;随着对Tcl/Tk的改进的不断进行,Tkx通常可以自动利用这些改进。 TkDocs.com上的跨语言教程提供了Tkx语法的示例。

我去年发现了Tcl::pTk,并成为它的维护者。我主要使用它是为了使用macOS的原生aqua UI(而不是像Perl/Tk使用的XQuartz),这也是其他一些活跃用户报告使用它的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接