31

レイアウトに pack と grid をいつ使用すべきかについて、ベスト プラクティスのヒントはありますか?

私がグーグルで読んだことから、コンセンサスは、グリッドはあらゆるパックシナリオを処理できるが、その逆はできないということのようです。

会話を開始するには、ウィジェットを表示/非表示にしたい場合に、グリッドとパックが好まれるユース ケースがあるようです。

4

3 に答える 3

18

どちらも本質的に他よりも優れているわけではありません。それぞれに長所と短所があります。それらが何であるかを学び、どちらを使用するかの選択が明らかになります。

gridグリッドに配置する必要がある場合は、かなり使いやすくなります。packいくつかのウィジェットを単一の行または単一の列に配置するだけでよい場合は、一般的に使いやすくなります。間には灰色の領域がたくさんあり、どちらも必ずしも他よりも優れているとは限りません。

考慮すべきもう1つのことは、質問で言ったことです。実行時にウィジェットを表示および非表示にする場合は、構成されたすべての属性の値を記憶する方法があるgridため、おそらく最良の選択です。grid_removeウィジェットを再度追加します。

個人的には、コマンドpackがなかったときに最初にTkを学んだので、常に使用することを最初に選択しますgrid。で簡単にできない場合pack、またはグリッドに物事を非常に明確に配置している場合は、を使用しますgrid

于 2010-12-09T20:03:27.277 に答える
10

洗練されたアプリケーションには、常にグリッドオーバーパックをお勧めします。パックがより簡単で法案に適合するエッジケースはごくわずかです(すべてが1行または列に収まります)。グリッドはより優れた「構成可能性」を備えています(たとえば、メガウィジェットまたはグリッド要素のグリッド要素)。グリッドを好む理由は、グリッドが提供する追加の微調整オプションです。重み(成長と縮小に影響する)、最小サイズと最大サイズの使用、および均一な行/列の適用などの便利な機能。

あらゆるサイズの完全にグリッド化されたアプリは、同等のパックされたアプリよりも(大幅に)少ないフレームを使用し、内部要素をより適切に縮小/拡張制御できます。

ところで、packとgridの両方でサブ要素を表示/非表示にできますが、構文は2つでわずかに異なります。'forget'ではなく'remove'がスレーブウィジェットのグリッドオプションを記憶するため、グリッドはわずかに優れています。

于 2010-12-10T17:38:01.673 に答える
2

個人的には、グリッドの方がはるかに使いやすいと思うので、それを使用します。もちろん、絶対にやってはいけないことは、同じコンテナーで両方を同時に使用しようとすることです。その違いを作ってくれたブライアン・オークリーに感謝します。

于 2010-12-09T17:25:28.280 に答える