回答編集履歴
4
説明捕捉
answer
CHANGED
@@ -29,6 +29,11 @@
|
|
29
29
|
|
30
30
|
```
|
31
31
|
def on_click(event):
|
32
|
+
"""
|
33
|
+
やっていることは、bindで呼び出された時の引数 (event)
|
34
|
+
と、ch2.callback が必要とする引数 (self, evnent) の橋渡しです。
|
35
|
+
"""
|
36
|
+
|
32
37
|
# self は外側のスコープから参照
|
33
38
|
return ch2.callback(self, event)
|
34
39
|
|
@@ -37,6 +42,8 @@
|
|
37
42
|
|
38
43
|
という風に、`def callback(self, event):` に引数を合わせる為の式になります。
|
39
44
|
|
45
|
+
def を使ってますが、関数内で使って大丈夫です。
|
46
|
+
self.nb.bind の直前に、インデントは揃えて。
|
40
47
|
|
41
48
|
----
|
42
49
|
## 改善策: 分割方法について、
|
3
lambda を使わない表記を追加
answer
CHANGED
@@ -28,9 +28,11 @@
|
|
28
28
|
`lambda event: ch2.callback(self, event)` は関数に直すと
|
29
29
|
|
30
30
|
```
|
31
|
-
def
|
31
|
+
def on_click(event):
|
32
32
|
# self は外側のスコープから参照
|
33
33
|
return ch2.callback(self, event)
|
34
|
+
|
35
|
+
self.nb.bind('<ButtonRelease-1> ', on_click)
|
34
36
|
```
|
35
37
|
|
36
38
|
という風に、`def callback(self, event):` に引数を合わせる為の式になります。
|
2
説明補足
answer
CHANGED
@@ -20,8 +20,8 @@
|
|
20
20
|
|
21
21
|
**追記: 問題点について**
|
22
22
|
|
23
|
-
- 通常の関数として使う場合、引数 self が必要
|
23
|
+
- メソッドをクラスの外に出し、通常の関数として使う場合、引数 self が必要
|
24
|
-
- bind で登録
|
24
|
+
- bind で登録した関数には、呼び出し時に引数 event が渡される
|
25
25
|
|
26
26
|
と、引数が一致しない為に起こっています。
|
27
27
|
|
1
問題点についての解説を追記
answer
CHANGED
@@ -18,7 +18,25 @@
|
|
18
18
|
callback 側は `def callback(self,event):` で受けます。
|
19
19
|
|
20
20
|
|
21
|
+
**追記: 問題点について**
|
21
22
|
|
23
|
+
- 通常の関数として使う場合、引数 self が必要
|
24
|
+
- bind で登録する関数には、引数 event が渡される
|
25
|
+
|
26
|
+
と、引数が一致しない為に起こっています。
|
27
|
+
|
28
|
+
`lambda event: ch2.callback(self, event)` は関数に直すと
|
29
|
+
|
30
|
+
```
|
31
|
+
def func(event):
|
32
|
+
# self は外側のスコープから参照
|
33
|
+
return ch2.callback(self, event)
|
34
|
+
```
|
35
|
+
|
36
|
+
という風に、`def callback(self, event):` に引数を合わせる為の式になります。
|
37
|
+
|
38
|
+
|
39
|
+
----
|
22
40
|
## 改善策: 分割方法について、
|
23
41
|
|
24
42
|
単一のファイルに書かれた状態から
|