Tkinterは初めてで、グリッドレイアウトマネージャーを使用してアプリを作成してみました。しかし、自分の思い通りに活用する方法が見つからないようです。たとえば、セル(3,8)にラベルを配置したり、セル(5,1)にボタンを配置したりできるように、「セル」でいっぱいのグリッドをシミュレートする必要があります。これが私が試したことの例です:
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)
button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)
Tkinterは各ウィジェットの相対位置を保持します(つまり、button
はlabel
の右上にあります)が、その間のスペースは無視します。この問題を少し検索してweight
について調べましたが、それは私が探しているものではないようです。 label
とbutton
のレイアウトに依存しないものが欲しいのですが。助けてくれてありがとう!
grid_columnconfigure
および grid_rowconfigure
メソッドを実行することにより、グリッド内の列/行(ウィジェットを含まないものを含む)の間隔を指定できます。ウィジェットの親(この場合、親はroot
になります)。
たとえば、4番目の列の最小幅を設定するには、コードに最後の行を追加します。
import Tkinter as tk
root = tk.Tk()
label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)
button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)
root.grid_columnconfigure(4, minsize=100) # Here
すべての列と行に最小サイズを設定する場合は、次を使用してすべてを繰り返すことができます。
col_count, row_count = root.grid_size()
for col in xrange(col_count):
root.grid_columnconfigure(col, minsize=20)
for row in xrange(row_count):
root.grid_rowconfigure(row, minsize=20)
編集興味深いことに、effbotは次のように述べています。
minsize =行の最小サイズを定義します。 行が完全に空の場合、このオプションが設定されていても表示されないことに注意してください。
(イタリック鉱山)しかし、私が試した限りでは、空の行と列でも機能するようです。
デフォルトでは、行の高さはゼロ、列の幅はゼロです。したがって、何も含まれていない行と列は非表示になり、スペースを占有しません。