回答編集履歴
4
追記 pack/grid で伸縮可能にする場合のwidth 指定について
answer
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
frame1.grid_columnconfigure(2, weight=0) # 右
|
38
38
|
|
39
39
|
btn1 = ttk.Button(frame1, text="ボタン1")
|
40
|
-
btn2 = ttk.Button(frame1, text="ボタン2")
|
40
|
+
btn2 = ttk.Button(frame1, text="ボタン2") # pack/grid で伸縮可能にする場合、widthは自動調整されるのでサイズ指定は上書きされ無効になります
|
41
41
|
btn3 = ttk.Button(frame1, text="ボタン3")
|
42
42
|
|
43
43
|
#配置
|
3
weight について、誤解されてそうな感じだったので追記
answer
CHANGED
@@ -47,4 +47,34 @@
|
|
47
47
|
btn3.grid(column=2, row=0)
|
48
48
|
|
49
49
|
root.mainloop()
|
50
|
+
```
|
51
|
+
|
52
|
+
----
|
53
|
+
|
54
|
+
weight について、誤解されてそうな感じだったので追記
|
55
|
+
|
56
|
+
```python
|
57
|
+
import tkinter as tk
|
58
|
+
from tkinter import ttk
|
59
|
+
|
60
|
+
root = tk.Tk()
|
61
|
+
frame1 = ttk.Frame(root, padding=10)
|
62
|
+
frame1.pack(fill=tk.BOTH, expand=tk.YES)
|
63
|
+
|
64
|
+
# weight の値について、レイアウト可能な領域の割合として考えてみてください
|
65
|
+
# 比率で 1:2:1 にする場合。
|
66
|
+
frame1.grid_columnconfigure(0, weight=1)
|
67
|
+
frame1.grid_columnconfigure(1, weight=2)
|
68
|
+
frame1.grid_columnconfigure(2, weight=1)
|
69
|
+
|
70
|
+
btn1 = ttk.Button(frame1, text="ボタン1")
|
71
|
+
btn2 = ttk.Button(frame1, text="ボタン2")
|
72
|
+
btn3 = ttk.Button(frame1, text="ボタン3")
|
73
|
+
|
74
|
+
# sticky EW(east-west) 指定で、サイズを左右に伸縮可能にする
|
75
|
+
btn1.grid(column=0, row=0, sticky=tk.EW)
|
76
|
+
btn2.grid(column=1, row=0, sticky=tk.EW)
|
77
|
+
btn3.grid(column=2, row=0, sticky=tk.EW)
|
78
|
+
|
79
|
+
root.mainloop()
|
50
80
|
```
|
2
回答例のコードを追記
answer
CHANGED
@@ -18,4 +18,33 @@
|
|
18
18
|
grid() 引数の sticky を調べて見て下さい。.grid(sticky=tk.NSEW)
|
19
19
|
|
20
20
|
grid_columnconfigure では、ウィジェットが配置可能な領域の伸縮を決定し、
|
21
|
-
sticky によりウィジェットがどの方向によるのかが決定されます。
|
21
|
+
sticky によりウィジェットがどの方向によるのかが決定されます。
|
22
|
+
|
23
|
+
----
|
24
|
+
|
25
|
+
```python
|
26
|
+
import tkinter as tk
|
27
|
+
from tkinter import ttk
|
28
|
+
|
29
|
+
root = tk.Tk()
|
30
|
+
frame1 = ttk.Frame(root, padding=10)
|
31
|
+
frame1.pack(fill=tk.BOTH, expand=tk.YES) # 前提として、親ウィジェットを伸縮可能にしておく
|
32
|
+
# ※grid() では位置する場合は、root.grid_[row|column]configure の設定も必要
|
33
|
+
|
34
|
+
# root ではなく、frame の grid_configure
|
35
|
+
frame1.grid_columnconfigure(0, weight=0) # 左
|
36
|
+
frame1.grid_columnconfigure(1, weight=1) # 中央のみ伸縮可能に
|
37
|
+
frame1.grid_columnconfigure(2, weight=0) # 右
|
38
|
+
|
39
|
+
btn1 = ttk.Button(frame1, text="ボタン1")
|
40
|
+
btn2 = ttk.Button(frame1, text="ボタン2")
|
41
|
+
btn3 = ttk.Button(frame1, text="ボタン3")
|
42
|
+
|
43
|
+
#配置
|
44
|
+
btn1.grid(column=0, row=0)
|
45
|
+
# sticky オプションの有無を確認してみてください。
|
46
|
+
btn2.grid(column=1, row=0, sticky=tk.EW)
|
47
|
+
btn3.grid(column=2, row=0)
|
48
|
+
|
49
|
+
root.mainloop()
|
50
|
+
```
|
1
追記 レイアウト領域とウィジェットの伸縮について
answer
CHANGED
@@ -9,4 +9,13 @@
|
|
9
9
|
- root.mainloop()
|
10
10
|
|
11
11
|
を含む、コードをコピーして実行が可能な状態で、
|
12
|
-
且つ問題の現象を再現できる最少のコードを提示してください。
|
12
|
+
且つ問題の現象を再現できる最少のコードを提示してください。
|
13
|
+
|
14
|
+
----
|
15
|
+
追記: ウィジェットが伸びない問題に関しては、
|
16
|
+
「レイアウト可能な領域の伸縮」「ウィジェットのサイズの伸縮」の2点があります。
|
17
|
+
|
18
|
+
grid() 引数の sticky を調べて見て下さい。.grid(sticky=tk.NSEW)
|
19
|
+
|
20
|
+
grid_columnconfigure では、ウィジェットが配置可能な領域の伸縮を決定し、
|
21
|
+
sticky によりウィジェットがどの方向によるのかが決定されます。
|