回答編集履歴
2
コード微修正。コールバック関数の名前をイベント名に
answer
CHANGED
@@ -23,8 +23,7 @@
|
|
23
23
|
label1 = tk.Label(root)
|
24
24
|
label1.pack()
|
25
25
|
|
26
|
-
|
27
|
-
def
|
26
|
+
def on_slider_changed(value):
|
28
27
|
num = int(value)
|
29
28
|
|
30
29
|
# ラベルに表示
|
@@ -32,7 +31,7 @@
|
|
32
31
|
|
33
32
|
# ※ 変更点は先頭の2行
|
34
33
|
slider1 = tk.Scale(root,
|
35
|
-
command=
|
34
|
+
command=on_slider_changed,
|
36
35
|
|
37
36
|
orient='horizontal',
|
38
37
|
label = 'Average size',
|
1
説明補足
answer
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
原因:
|
4
4
|
tkinter のプログラムは、mainloop() により
|
5
5
|
マウスのイベント等を処理するイベントループに入り、
|
6
|
-
mainloop()より後ろに書かれたコードは、
|
6
|
+
mainloop()より後ろに書かれたコードは、ウィンドウが閉じられる迄実行されません。
|
7
|
-
ウィンドウが閉じ
|
7
|
+
そして、ウィンドウが閉じた後はスライダー等のUIは破棄されている為、参照できなくなっています。
|
8
8
|
|
9
9
|
解決策:
|
10
10
|
適切なイベント内で値を表示更新する。
|