箱詰めはとなります。実際はという単純なものなので、理解していないのはおそらくそれがもっと複雑だと思うからです。
レイアウトは縦(レンガの山のような)または横(人の列のような)のいずれかです。そのレイアウト内の各要素は展開できますが展開できません。
import gtk
box = gtk.HBox()
b1 = gtk.Button('button1')
b2 = gtk.Button('button2')
box.pack_start(b1)
box.pack_start(b2)
:コードは、あろう2つのボタンを有する
横長(HBoxの)
[widget][widget][widget][widget]
垂直(のVBox)
[widget]
[widget]
[widget]
[widget]
したがって例えば、横長レイアウト(HBoxの)
デフォルトの梱包にはexpand=True
が含まれているので、これらのボタンは両方ともボックスに追加されたものは拡大し、それぞれ面積の半分を占めます。容器の大きさに関係なく私はこれを「ストレッチ」と考えています。
box.pack_start(b1, expand=False)
非拡大ウィジェット::
[[widget][ widget ]]
あなたがいずれかのボタンが拡大しないようにしたい場合、あなたはこのようにそれをパックします、だから、
[[ widget ][ widget ]]
:ウィジェットを拡大
ボタンは、それ自身描画する必要がある領域(テキスト+枠+シャドウ+画像)(存在する場合)を占有します。残りの領域を埋めるためにもう一方のボタンが展開されます。通常は、ボタンを展開する必要はありません。そのため、実際の状況は、ウィンドウを埋めるために展開したいTextAreaです。
pack_start
に渡すことができる他のパラメータは、fillパラメータです。これは通常無視できます。 expand=False
の場合は、fill
のパラメータは完全に無視されます(その状況で意味をなさないため)。
あなたが言いました他のものはset_size_request
です。私は一般的に、これは良い考えではないと言います。あなたがそれを使用する必要がある状況があるので、私は一般的に言う。しかし、GTK +のユーザーインターフェースを詰め込んでいる人にとっては、使用しないことを強くお勧めします。一般的には、ボックスやその他のコンテナがレイアウトを処理します。 set_size_request
は、あなたが期待していることを正確には行いません。それはウィジェットのサイズを変更するのではなく、要求するスペースの量だけを変更します。それはもっと多くを使うかもしれないし、もっと大きなスペースを埋めるために伸びるかもしれない。要求よりも小さくなることはめったにありませんが、単に「要求」であるため、要求が満たされる保証はありません。
言語固有のGTK +ドキュメントのことを理解するのに問題がある人は、[developer.gnome.org](https://developer.gnome.org)の各機能を完全に説明するプライマリCドキュメントを使用することを強くお勧めします。 – oldtechaa