質問するログイン新規登録

回答編集履歴

2

コード微修正。コールバック関数の名前をイベント名に

2020/05/02 16:10

投稿

teamikl
teamikl

スコア8824

answer CHANGED
@@ -23,8 +23,7 @@
23
23
  label1 = tk.Label(root)
24
24
  label1.pack()
25
25
 
26
-
27
- def update_label(value):
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=update_label,
34
+ command=on_slider_changed,
36
35
 
37
36
  orient='horizontal',
38
37
  label = 'Average size',

1

説明補足

2020/05/02 16:10

投稿

teamikl
teamikl

スコア8824

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
  適切なイベント内で値を表示更新する。