レイアウトにパックとグリッドをいつ使用すべきかに関するベストプラクティスのヒントはありますか?
私がグーグルで読んでいることから、グリッドはどんなパックシナリオも処理できるが、その逆はできないというのがコンセンサスのようです。
会話を開始するために、グリッドとパックを優先する1つのユースケースは、ウィジェットを表示/非表示にする場合であるように見えます。
どちらも本質的にもう一方よりも優れているわけではありません。それぞれに長所と短所があります。それらが何であるかを学び、どちらを使用するかの選択が明らかになります。
grid
は、グリッドに配置する必要がある場合に非常に使いやすくなっています。 pack
は、ウィジェットを1行または1列に配置するだけの場合は、一般的に使いやすくなります。間には灰色の領域がたくさんあり、どちらも必ずしも他よりも優れているとは限りません。
考慮すべきもう1つのことは、質問で言ったことです。実行時にウィジェットを表示および非表示にする場合は、値を記憶するgrid_remove
メソッドがあるため、おそらくgrid
が最良の選択です。ウィジェットを再度追加する場合に備えて、構成されているすべての属性の.
個人的には、pack
コマンドがなかったときに最初にTkを学習したので、最初に選択するのは常にgrid
を使用することです。 pack
で簡単に実行できない場合、またはグリッドに物事を非常に明確にレイアウトしている場合は、grid
を使用します。
洗練されたアプリケーションには、常にグリッドオーバーパックをお勧めします。パックがより簡単で法案に適合するエッジケースはごくわずかです(すべてが1行または列にあります)。グリッドの「構成可能性」は優れています(例:メガウィジェットまたはグリッド要素のグリッド要素)。グリッドを好む理由は、グリッドが提供する追加の微調整オプションです。重み(ところで拡大と縮小に影響する)、最小サイズと最大サイズの使用、および均一な行/列の適用などの便利な機能。
あらゆるサイズの完全にグリッド化されたアプリは、同等のパックされたアプリよりも(大幅に)少ないフレームを使用し、内部要素をより適切に縮小/拡大制御できます。
ところで、packとgridの両方でサブ要素を表示/非表示にできますが、構文は2つでわずかに異なります。 'forget'ではなく 'remove'がスレーブウィジェットのグリッドオプションを記憶するため、グリッドはわずかに優れています。
個人的にはグリッドの方がずっと扱いやすいと思うので、それを使います。もちろん、あなたはおそらくあなたが決してしてはいけないことの1つを読んだことがあります両方を使用しようとすることです 同時に 同じ容器に。その区別をしてくれたブライアン・オークリーに感謝します。