見た感じでは、weight の値指定が間違ってますが、
上記のコードだけでは、フレーム自体のサイズが定まらないので、
伸びる伸びない以前にフレーム自体が見えません。
どのように要素が伸びないのを確認したのかが疑問になってきます。
(コードの省略部分によっては別の問題かもしれない)
- tkinter, ttk の import
- root.mainloop()
を含む、コードをコピーして実行が可能な状態で、
且つ問題の現象を再現できる最少のコードを提示してください。
追記: ウィジェットが伸びない問題に関しては、
「レイアウト可能な領域の伸縮」「ウィジェットのサイズの伸縮」の2点があります。
grid() 引数の sticky を調べて見て下さい。.grid(sticky=tk.NSEW)
grid_columnconfigure では、ウィジェットが配置可能な領域の伸縮を決定し、
sticky によりウィジェットがどの方向によるのかが決定されます。
python
1import tkinter as tk
2from tkinter import ttk
3
4root = tk.Tk()
5frame1 = ttk.Frame(root, padding=10)
6frame1.pack(fill=tk.BOTH, expand=tk.YES) # 前提として、親ウィジェットを伸縮可能にしておく
7# ※grid() では位置する場合は、root.grid_[row|column]configure の設定も必要
8
9# root ではなく、frame の grid_configure
10frame1.grid_columnconfigure(0, weight=0) # 左
11frame1.grid_columnconfigure(1, weight=1) # 中央のみ伸縮可能に
12frame1.grid_columnconfigure(2, weight=0) # 右
13
14btn1 = ttk.Button(frame1, text="ボタン1")
15btn2 = ttk.Button(frame1, text="ボタン2") # pack/grid で伸縮可能にする場合、widthは自動調整されるのでサイズ指定は上書きされ無効になります
16btn3 = ttk.Button(frame1, text="ボタン3")
17
18#配置
19btn1.grid(column=0, row=0)
20# sticky オプションの有無を確認してみてください。
21btn2.grid(column=1, row=0, sticky=tk.EW)
22btn3.grid(column=2, row=0)
23
24root.mainloop()
weight について、誤解されてそうな感じだったので追記
python
1import tkinter as tk
2from tkinter import ttk
3
4root = tk.Tk()
5frame1 = ttk.Frame(root, padding=10)
6frame1.pack(fill=tk.BOTH, expand=tk.YES)
7
8# weight の値について、レイアウト可能な領域の割合として考えてみてください
9# 比率で 1:2:1 にする場合。
10frame1.grid_columnconfigure(0, weight=1)
11frame1.grid_columnconfigure(1, weight=2)
12frame1.grid_columnconfigure(2, weight=1)
13
14btn1 = ttk.Button(frame1, text="ボタン1")
15btn2 = ttk.Button(frame1, text="ボタン2")
16btn3 = ttk.Button(frame1, text="ボタン3")
17
18# sticky EW(east-west) 指定で、サイズを左右に伸縮可能にする
19btn1.grid(column=0, row=0, sticky=tk.EW)
20btn2.grid(column=1, row=0, sticky=tk.EW)
21btn3.grid(column=2, row=0, sticky=tk.EW)
22
23root.mainloop()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/05 06:09
2021/02/05 07:20
2021/02/05 08:44 編集
2021/02/08 00:19
2021/02/08 04:38 編集
2021/02/08 07:16