4

固定サイズのフレームを作成しましたが、ラベルやその他のウィジェットを追加したいと思います。しかし、このフレームに新しいウィジェットを追加するとすぐに、その属性が尊重されない、つまりサイズとデフォルトの背景色セットが尊重されないことに気づきました。

from Tkinter import *
tk = Tk()
page1 = Frame(tk, bg="blue", width=100, height=200)
l1 = Label(page1, text='This is label 1')
page1.pack()
l1.pack()
tk.mainloop()

したがって、上記の例で4行目と6行目をコメントアウトすると、背景色が青色の固定サイズのフレームが表示されます。私の要件は、この色でこのフレームに他のウィジェットを追加したいということです。

4

1 に答える 1

3

幅と高さが尊重されないことについては正しいですが、背景色については正しくありません。背景色は影響を受けませんが、背景がラベルの周囲に正確に収まっているため、背景を見ることができません。パックするときにラベルにパディングを追加すると、背景が表示されます。

幅と高さに関しては...これはTkinterの優れた機能の1つです。デフォルトでは、コンテナウィジェットは、そのコンテンツを保持するのに十分な大きさになるように展開または折りたたまれます。したがって、を呼び出すpackと、フレームが縮小します。この機能は、ジオメトリ伝播と呼ばれます。

大多数のアプリケーションでは、これが必要な動作ですコンテナのサイズを明示的に設定したいというまれな場合には、この機能をオフにすることができます。オフにするには、コンテナのいずれかpack_propagateまたはgrid_propagateオンを呼び出し(グリッドを使用しているか、そのコンテナでパックを使用しているかによって異なります)、値を.にしますFalse

例としてコードを使用すると、次のようになります。

page1.pack_propagate(False)

私の推奨は、それを行わず、代わりにジオメトリの伝播を操作する方法を学ぶことです。これにより、ユーザーがウィンドウのサイズを変更したときにGUIの動作が向上し、ウィンドウの適切なサイズを計算するために時間を費やすことはありません。Tkinterに任せてください。

于 2012-07-10T13:18:09.790 に答える