回答編集履歴
1
間違えを修正
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
|
-
さらに左クリック:
|
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.
|
17
|
+
1. ボタンを押したら、バインドされている関数をちゃんと切り替える。 stop_Lを押して止めたら、<ButtonPress-1>にpress_L を再設定する。
|
21
18
|
2. 関数は1つだけ用意して、その関数で今の状況(回転中かどうか)を確認して、適切な処理を行なうようにする。
|
22
19
|
のいずれかでしょう。 右回転中に左クリックしたときとかあるので、結果として2がいいんじゃないかな。
|
23
20
|
|