回答編集履歴
3
追記
answer
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
追記: 時間がたってからの追記ですみません。
|
2
|
+
|
3
|
+
[https://teratail.com/questions/188436#reply-279726](https://teratail.com/questions/188436#reply-279726)
|
4
|
+
にあるようにFrameの大きさをpackで親ウィジェットに合わせて拡張することが簡単にできることに気づきました。こちらの方法も参照ください!
|
5
|
+
|
6
|
+
---
|
1
7
|
Frameは複数の子供ウィジェットを配置できるコンテナウィジェットですが、子供をどのように配置するか適切に計算できるためには「全ての子供を同じ方法でレイアウトする必要がある」という点に注意が必要です。
|
2
8
|
|
3
9
|
本件の場合、appの子供として2つのボタンがありますが、一方をplaceで、もう一方をpackで配置しようとしています。そういうことはできません。全てをpack/place/gridのいずれか一種類の配置方法に統一してください。
|
2
typo訂正
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
ここで「実験」してみました
|
8
8
|
|
9
|
-
自分は「rootの大きさを
|
9
|
+
自分は「rootの大きさをgeometryで指定し、Frameをその大きさに合わせて自動拡張させる」ことが、Frameの配置で`pack(expand=True)`とすれば可能と考えたのですが、実際にはダメでした。
|
10
10
|
そこで考え方を変えて、「Frameインスタンスの大きさをwidth, heightで指定しrootは子供であるFrameインスタンスの大きさに合わせて広がってくれる」という方法を取ってみたところ期待通りになりました。
|
11
11
|
|
12
12
|
```Python
|
@@ -22,7 +22,7 @@
|
|
22
22
|
self.bind('<Configure>', debug_conf) # for DEBUG
|
23
23
|
self.pack()
|
24
24
|
self.create_widgets()
|
25
|
-
# master.
|
25
|
+
# master.geometry('1000x600') # rootの大きさは指定しない
|
26
26
|
|
27
27
|
def create_widgets(self):
|
28
28
|
make_xline_button = tk.Button(self, text="make X-axis", command=self.say_hi)
|
1
冗長な文章表現をあらためる
answer
CHANGED
@@ -41,4 +41,4 @@
|
|
41
41
|
app = MainApp(root)
|
42
42
|
root.mainloop()
|
43
43
|
```
|
44
|
-
debug_confは前述の「実験」をする際
|
44
|
+
debug_confは前述の「実験」をする際のデバッグ用の関数です。このデバッグテクニックは「注目するウィジェットの大きさと位置が実際にどうなっているか」を確認するのに重宝します。こういうちょっとしたデバッグをすると「あ・・・ボタンを配置しても、Frame自体の大きさが1x1にしかなってないから子供が表示されないんだな・・・」といったことにすぐに気づけるため悩む時間を短縮できます。
|