5

私は Perl Tkx を使用して GUI に取り組んでおり、ボタンの作成に使用できる 2 つの別個の関数があることを発見しました。(buttonおよびttk__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()

このスクリプトは、テキストを左揃えにします。

左揃えのテキスト


これらの 2 つの関数には他にどのような違いがあるのか​​、ボタンを作成する 2 つの別個の関数がある特定の理由があるのか​​ どうか疑問に思っていました。通常、これらのうちの 1 つは他のものよりも使いやすいですか?

ttk__buttonまた、関数を使用してテキストを中央揃えする方法はありますか?

編集:

Perl Tkx は本質的に Tcl から構築されているため、これに「Tcl」タグを追加しました。Perl はかなり得意ですが、Tcl に関しては初心者です。

一見するとそうは思えないかもしれませんが、これは実際には Perl の質問というよりも Tcl に関する質問なので、Tcl に詳しい方からの回答をお待ちしております。


ノート:

テキストを中央揃えにするttk__buttonには、次の行をコードに追加します。

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

4

2 に答える 2

5

Buttonたとえば、「従来の」ウィジェットの 1 つです。ウィジェットのttkファミリはより最新のものであり、ホスト OS の表示構成に注意を払うように設計されています。ユーザーが選択した「テーマ」にアプリを溶け込ませたい場合は、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 には、 traditional とtiledの 2 つのクラスのウィジェットがあります。従来のウィジェットは、Tk の開始以来存在していたものです。タイル ウィジェットは比較的新しいものです。テーマのサポートを介してネイティブ ウィジェットをエミュレートします。多くの (すべてではない) ウィジェットが両方の形式で利用できます。Tile は、 Tk としてTk 8.5 に統合される前に、別のライブラリとして開始されました。

残念ながら、伝統的なウィジェットとタイル化されたウィジェットは必ずしも同じ構成オプションのセットを持っているとは限らないため、従来のウィジェットからタイル化されたウィジェットへの切り替えは、「use ttk」ステートメントを追加するほど単純ではありません。

Tkx では、ttk接頭辞はウィジェットのタイル バージョンを指定するために使用されます。Tcl Tk wiki には、さまざまなテーマを使用した ttk ウィジェットの比較があります。(「クラシック」テーマは、従来の Tk のルック アンド フィールと一致します。)私のシステム (Win7)buttonでレンダリングする方法は次のとおりです。ttk__button

ボタン vs ttk ボタン

従来のウィジェットはより柔軟です。より多くの属性を構成して、ウィジェットごとに行うことができます。タイル化されたウィジェットは見栄えが良く (つまりネイティブ)、アプリケーションの全体的なルック アンド フィールを簡単に変更できます。

個人的には、利用可能な場合は常に ttk ウィジェットを使用します。

于 2015-01-16T20:16:07.297 に答える