【问题标题】:How can I enhance the look of the Perl/TK GUI under Perl 5.004?如何在 Perl 5.004 下增强 Perl/TK GUI 的外观?
【发布时间】:2009-03-04 15:39:11
【问题描述】:

我有一个应用程序可以在 Windows、Linux 和 Solaris 上运行,它使用 Perl/TK GUI。由于限制,我们仅限于 Perl/TK 。此外,我们仅限于旧的Perl/Tk 版本,5.00404

我希望在这些限制范围内工作,以使 GUI 看起来尽可能美观和现代。

是否有任何具有 TK 设计方案(用于按钮、框架、颜色等)的网络资源可以帮助我完成这项工作?


我也在寻找现代化建议,例如我找到的 here

如果您发现您的 Tk 应用在基于 X 的系统上看起来有点难看,请尝试在脚本顶部添加以下行:

$mw->optionAdd("*font", "-*-arial-normal-r-*-*-*-120-*-*-*-*-*-*");
$mw->optionAdd("*borderWidth", 1);

【问题讨论】:

  • 你能给我们一个应用程序的截图吗?根据我的经验,让 GUI 变得漂亮更多是关于设计而不是小部件集(当然,这取决于你对“漂亮”的定义。也许如果我们看到你目前拥有的东西,我们可以提出一些建议。
  • 让我猜猜,Igor,你为英特尔工作?
  • Artem:是的,我记得你在一个项目中优化了现有的 perl 代码
  • 呵呵,世界好小。

标签: perl user-interface tk perltk


【解决方案1】:

尝试使用图像而不是按钮元素,然后您可以拥有任何您喜欢的样式并且可以烘焙字体。这几乎适用于内容不是动态的任何元素 - 包括窗格上的背景等。当然,它的工作量更大,但它确实解决了您的问题,特别是如果您的项目组中有一位称职的艺术家。

【讨论】:

  • 这可能不是最“优雅的代码”解决方案,但它非常实用。需要注意的一件事是调整大小。
  • 哇哦!我的第一个赏金!谢谢。
【解决方案2】:

您可以使用Tk theme engine 为您的应用提供更好的外观。

【讨论】:

  • 投反对票,因为您无法从 Perl 5.004 访问 ttk 内容。 AFAICT,您至少需要 5.6 才能访问允许在最新版本的 Tk 中使用主题支持的较新绑定(Tkx 或 Tcl::Tk)。
  • 严格来说并非如此。有一个兼容库(名为“tile”)适用于 8.5(并且已经使用 8.5 几年了)。我不知道这是否可以与 Python 一起使用,也不知道这有多容易。
  • 不确定它是否可以与 Python 一起使用有多相关?
【解决方案3】:

使用 optionAdd 通过选项数据库调整默认值 是一个合理的开始。可以在以下位置找到有关此的线程:

http://tcl.projectforum.com/tk/221

从那里下载 griffin.kit,使用 sdx 工具解包并定位 griffin.tcl 以获得一组良好的选项设置。

http://wiki.tcl.tk/3411 用于 sdx 工具。

【讨论】:

  • 它是为 Tcl 编写的,但应该可以轻松地转换为 Perl。
【解决方案4】:

由于在 Linux 中 Tk::Entry 和 Tk::Text 的背景是灰色的,所以我也会使用以下两行。

$mw->optionAdd( '*Entry.background',   'snow1' );
$mw->optionAdd( '*Text.background',    'snow1' );

用您选择的颜色替换“snow1”。您还可以使用颜色的十六进制表示 (RGB),例如“#ff9696”。

【讨论】:

【解决方案5】:

Tk 的Tile 主题引擎使它看起来更漂亮。然而,Perl/Tk 远远落后于 Tk 的发展,无法利用 Tile 和其他进步。

您应该调查Tkx 是否适合您。它与 Perl/Tk 不完全兼容,但 API 非常接近。它是 Perl 和 Tcl/Tk 之间的一座桥梁,因此它可以使用所有现代 Tcl/Tk 特性(如 Tile),同时仍然使用 Perl 编写应用程序逻辑。相当多的 ActiveState 自己的图形实用程序使用 Tkx,结果相当漂亮。

(来源:activestate.com

不过,Perl 5.00404 非常古老。 Tkx dist 声称依赖于 Perl≥5.008...我没有足够老的 Perl 来看看它有多准确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多