5

我一直在使用 Perl Tkx 开发 GUI,并发现有两个单独的函数可以用来创建按钮。(buttonttk__button)。

到目前为止,我发现的唯一区别是该button函数似乎使文本居中对齐,而该ttk__button函数似乎使文本左对齐。


使用示例button

#!/usr/bin/perl

use strict;
use warnings;

use Tkx;

my $text = "Hello\nworld!\n\nThis is some text...";
my $mw = Tkx::widget->new(".");

my $b = $mw->new_button(
    -text => $text,
    -command => sub { exit; },
);
$b->g_grid;

Tkx::MainLoop()

此脚本将使文本居中:

居中文本


使用示例ttk__button

#!/usr/bin/perl

use strict;
use warnings;

use Tkx;

my $text = "Hello\nworld!\n\nThis is some text...";
my $mw = Tkx::widget->new(".");

my $b = $mw->new_ttk__button(
    -text => $text,
    -command => sub { exit; },
);
$b->g_grid;

Tkx::MainLoop()

此脚本将左对齐文本:

左对齐文本


我想知道这两个函数之间还有什么其他区别,以及是否有任何特殊原因有两个单独的函数可以创建按钮。其中一个通常比另一个更好用吗?

还有什么方法可以使用该ttk__button函数来居中对齐文本?

编辑:

我为此添加了“Tcl”标签,因为 Perl Tkx 本质上是由 Tcl 构建的。我对 Perl 非常熟悉,但在 Tcl 方面我还是个新手。

虽然乍一看可能不像,但实际上这更像是一个 Tcl 问题而不是 Perl 问题,所以我很想听听有 Tcl 经验的人的回答。


笔记:

要将文本居中ttk__button添加到您的代码中:

Tkx::ttk__style_configure('TButton', -justify => 'center');

4

2 回答 2

5

Button是“传统”小部件之一。小ttk部件系列更现代,旨在关注主机操作系统的显示配置。如果您希望您的应用程序与用户选择的“主题”融为一体,请使用ttk小部件。另一方面,如果你喜欢做很多工作来适应,或者想让你的应用程序像拇指一样突出,那么一定要使用“传统”小部件。

ttk可以通过该-style选项对小部件进行更精细的控制。您可能想查看教程页面@http ://www.tkdocs.com/tutorial/styles.html

值得一提的是,按钮不经常包含多行文本。还有其他一些在设计时考虑了文本布局的小部件。

编辑:

来自 tjwrona1992 的评论: Tkx::ttk__style_configure('TButton', -justify => 'center');

于 2015-01-12T19:57:29.203 回答
2

Tk 有两类小部件:传统的和平铺的。传统的小部件是那些自 Tk 成立以来就存在的小部件。平铺小部件相对较新。它们通过对主题的支持来模拟原生小部件。许多(但不是全部)小部件在这两种形式中都可用。Tile 在作为Ttk集成到 Tk 8.5 之前作为一个单独的库开始。

不幸的是,从传统到平铺 Tk 小部件的切换并不像添加“use ttk”语句那么简单,因为传统和平铺小部件不一定具有相同的配置选项集。

在 Tkx 中,ttk前缀用于指定小部件的平铺版本。Tcl Tk wiki 对使用各种主题的 ttk 小部件进行了比较。(“经典”主题与传统 Tk 的外观和感觉相匹配。)以下是在我的系统 (Win7) 上的渲染方式buttonttk__button

按钮与 ttk 按钮

传统的小部件更灵活。您可以配置更多属性并在每个小部件的基础上执行此操作。平铺小部件看起来更好(即原生),并且更容易更改应用程序的整体外观。

就个人而言,我总是在可用时使用 ttk 小部件。

于 2015-01-16T20:16:07.297 回答