回答編集履歴

1

間違えを修正

2022/09/01 05:14

投稿

TakaiY
TakaiY

スコア14307

test CHANGED
@@ -4,20 +4,17 @@
4
4
 
5
5
  左クリック: press_L が実行される
6
6
  -> root.after(1, press_L, None) 設定 > 回転開始
7
- -> <ButtonPress-1>にstop_L が設定される。
7
+ -> <ButtonPress-1>にstop_L が設定される。 press_L は消えてしまう。
8
8
 
9
- さらに左クリック: press_L と stop_L が実行される。
9
+ さらに左クリック: stop_L が実行される。
10
- -> press_L が実行される。 root.afterがさらに実行されるので早くなる。 <ButtonPress-1>にstop_L が設定される。(2つめ)
11
10
  -> stop_Lが実行される。 回転が止まる。
12
11
 
13
- です。
12
+ れだけです。
14
13
 
15
- 現象だけみれば、問題の原因は、<ButtonPress-1>にstop_Lがbindされ続けているからです。
14
+ 現象だけみれば、問題の原因は、<ButtonPress-1>にstop_Lがbindされ続けているためです。
16
-
17
- 処理的には、★のところの処理では<ButtonPress-1> の関数が変更されるのはなく、**追加**されることとや、押すたびにどんどん増えてしまうのも問題でしょう。
18
15
 
19
16
  対応としては、状況によッて<ButtonPress-1>のときに起きる処理を切り替えることのはずなので、
20
- 1. 関数を2つ用意して、ボタンを押したら、バインドされている関数をちゃんと切り替える。
17
+ 1. ボタンを押したら、バインドされている関数をちゃんと切り替える。 stop_Lを押して止めたら、<ButtonPress-1>にpress_L を再設定する。
21
18
  2. 関数は1つだけ用意して、その関数で今の状況(回転中かどうか)を確認して、適切な処理を行なうようにする。
22
19
  のいずれかでしょう。 右回転中に左クリックしたときとかあるので、結果として2がいいんじゃないかな。
23
20