「Pack ジオメトリマネージャ」の版間の差分
提供: tknotebook
(→Pack ジオメトリマネージャとは?) |
|||
11行: | 11行: | ||
Pack ジオメトリマネージャとは、ウィジェットを「積んで」配置してゆくタイプのジオメトリマネージャです。所謂エラスティックなGUIデザインを実現してくれます。 | Pack ジオメトリマネージャとは、ウィジェットを「積んで」配置してゆくタイプのジオメトリマネージャです。所謂エラスティックなGUIデザインを実現してくれます。 | ||
言葉で説明するのは難しいので図を使って説明しましょう。 | 言葉で説明するのは難しいので図を使って説明しましょう。 | ||
+ | |||
+ | ==pack()メソッドを使ってみる== | ||
+ | |||
+ | まず最初は最も簡単なコードを紹介しましょう。ウィンドウ全面に貼られた FrameウィジェットにButtonを貼り付けてみます。 | ||
+ | |||
+ | import tkinter as tk | ||
+ | |||
+ | root = tk.Tk() | ||
+ | |||
+ | frame = tk.Frame(root, width=200, height=200) | ||
+ | frame.pack_propagate(False) | ||
+ | frame.pack() | ||
+ | tk.Button(frame, text="A").pack() | ||
+ | |||
+ | |||
+ | root.mainloop() | ||
+ | |||
+ | これを実行すると、こんな感じになります。 | ||
+ | |||
+ | [[ファイル:Pack frame 01.png]] | ||
+ | |||
+ | このコードでは pack() メソッドの動きが分かりやすくなるように、ちょっとしたおまじないのコードを使っています。 | ||
+ | |||
+ | frame.pack_propagate(False) | ||
+ | |||
+ | は | ||
+ | |||
+ | tk.Button(frame, text="A").pack() | ||
+ | |||
+ | の影響が Frameウィジェットに及ぶのを防ぐためのコードです。このコードがないと、 | ||
+ | Frameのサイズは Buttonウィジェットを表示するのに必要なサイズに自動的にリサイズします。 | ||
+ | |||
+ | tk.Button(frame, text="A").pack() | ||
+ | |||
+ | としておくと、Frameウィジェットの大きさは コンストラクタに渡した width, height パラメータの値のままに保たれます。 | ||
+ | |||
+ | ここで何が起きているかを簡単に説明しておきましょう。 | ||
+ | |||
+ | tk.Button(frame, text="A").pack() | ||
+ | |||
+ | を実行すると、Buttonウィジェットは frameウィジェットの上端に張り付きます。 | ||
+ | |||
+ | [[ファイル:Pack 図面01.png]] |
2018年8月14日 (火) 13:24時点における版
メインページ>コンピュータの部屋#Python>Tkinter Tips
Tkinterにはウィジェットをウィンドウ上に配置するための「ジオメトリマーネジャ」があります。 ジオメトリマネージャとは、ウィジェットの位置や大きさを決定する仕掛けです。
TkInterには Pack, Grid, Place の3種類のジオメトリマネージャがありますが、この記事では Pack ジオメトリマネーがを紹介します。
Pack ジオメトリマネージャとは?
Pack ジオメトリマネージャとは、ウィジェットを「積んで」配置してゆくタイプのジオメトリマネージャです。所謂エラスティックなGUIデザインを実現してくれます。 言葉で説明するのは難しいので図を使って説明しましょう。
pack()メソッドを使ってみる
まず最初は最も簡単なコードを紹介しましょう。ウィンドウ全面に貼られた FrameウィジェットにButtonを貼り付けてみます。
import tkinter as tk root = tk.Tk() frame = tk.Frame(root, width=200, height=200) frame.pack_propagate(False) frame.pack() tk.Button(frame, text="A").pack() root.mainloop()
これを実行すると、こんな感じになります。
このコードでは pack() メソッドの動きが分かりやすくなるように、ちょっとしたおまじないのコードを使っています。
frame.pack_propagate(False)
は
tk.Button(frame, text="A").pack()
の影響が Frameウィジェットに及ぶのを防ぐためのコードです。このコードがないと、 Frameのサイズは Buttonウィジェットを表示するのに必要なサイズに自動的にリサイズします。
tk.Button(frame, text="A").pack()
としておくと、Frameウィジェットの大きさは コンストラクタに渡した width, height パラメータの値のままに保たれます。
ここで何が起きているかを簡単に説明しておきましょう。
tk.Button(frame, text="A").pack()
を実行すると、Buttonウィジェットは frameウィジェットの上端に張り付きます。