2

TKで新しいトップレベルまたはボタンを作成するときは、パス名を入力する必要があります。私は次のような基本的なコードを見てきました:

toplevel .a
...
button .a.b ...

私の質問は次のとおりです。ドットは文字とは異なる方法で処理されますか?それらは、親子関係を作成するある種の階層区切り文字ですか?私はwikiTKを調べましたが、その答えを見つけることができませんでした。どうもありがとう、-Lior

4

3 に答える 3

3

他の回答が言っているように、ファイルシステム階層を表すために / または \ が使用されるのと同じように、ドットは階層を表すために使用されます。

厳密に言えば、ウィジェットを階層に配置する必要はありません。そうすることの利点の 1 つは、グリッドやパックなどのジオメトリ マネージャがデフォルトで親の子を管理することです。たとえば、'pack .abc' はウィジェット abc をウィジェット .ab 内にパックします。これにより、単純なレイアウトを簡単に行うことができます。

多くの場合、grid と pack に子を配置するコンテナを指定することで、同じ効果を得ることができます。たとえば、'pack .c -in .ab' は、ウィジェット .c をコンテナー .ab に配置します。これにより、階層を浅く保つことができ、リファクタリングが少し簡単になります。

tk の基礎の優れた紹介については、http://www.beedub.com/book/2nd/TKINTRO.doc.htmlを参照してください。

于 2010-09-27T00:53:16.963 に答える
2

はい、そうです!たとえば、ウィジェットであるコンテンツを含むフレームを分離します。

set f [frame .hello]
button $f.b -text "Hello button"

pack $f.b

pack $f

この例でわかるように、fはfbではなく変数として評価されます

パック${f}.bと書くこともできますが、ドットが変数の一部ではないように見えるため、これは必要ありません。

于 2010-09-26T20:14:23.627 に答える
1

はい-それは階層のためです。このテーマに関するTkDocsをご覧ください。

ルートの子であるフレームは、「。c」と名付けられました。「c」の代わりに、たとえば「.content」という名前を付けるなど、ほとんど何でも配置できます。この名前は純粋にプログラムで使用するためのものであるため、意味のあるものを選択することをお勧めします。フレームの子であるコントロールには、「。c.feet」、「。c.meters」、「。c.flbl」などの名前が付けられました。階層のより深いレベルにウィジェットがある場合は、別の「。」を追加します。次に、一意の識別子。

于 2010-09-26T20:15:26.510 に答える