回答編集履歴
4
説明捕捉
test
CHANGED
@@ -60,6 +60,16 @@
|
|
60
60
|
|
61
61
|
def on_click(event):
|
62
62
|
|
63
|
+
"""
|
64
|
+
|
65
|
+
やっていることは、bindで呼び出された時の引数 (event)
|
66
|
+
|
67
|
+
と、ch2.callback が必要とする引数 (self, evnent) の橋渡しです。
|
68
|
+
|
69
|
+
"""
|
70
|
+
|
71
|
+
|
72
|
+
|
63
73
|
# self は外側のスコープから参照
|
64
74
|
|
65
75
|
return ch2.callback(self, event)
|
@@ -75,6 +85,10 @@
|
|
75
85
|
という風に、`def callback(self, event):` に引数を合わせる為の式になります。
|
76
86
|
|
77
87
|
|
88
|
+
|
89
|
+
def を使ってますが、関数内で使って大丈夫です。
|
90
|
+
|
91
|
+
self.nb.bind の直前に、インデントは揃えて。
|
78
92
|
|
79
93
|
|
80
94
|
|
3
lambda を使わない表記を追加
test
CHANGED
@@ -58,11 +58,15 @@
|
|
58
58
|
|
59
59
|
```
|
60
60
|
|
61
|
-
def
|
61
|
+
def on_click(event):
|
62
62
|
|
63
63
|
# self は外側のスコープから参照
|
64
64
|
|
65
65
|
return ch2.callback(self, event)
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
self.nb.bind('<ButtonRelease-1> ', on_click)
|
66
70
|
|
67
71
|
```
|
68
72
|
|
2
説明補足
test
CHANGED
@@ -42,9 +42,9 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
- 通常の関数として使う場合、引数 self が必要
|
45
|
+
- メソッドをクラスの外に出し、通常の関数として使う場合、引数 self が必要
|
46
46
|
|
47
|
-
- bind で登録
|
47
|
+
- bind で登録した関数には、呼び出し時に引数 event が渡される
|
48
48
|
|
49
49
|
|
50
50
|
|
1
問題点についての解説を追記
test
CHANGED
@@ -38,7 +38,43 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
+
**追記: 問題点について**
|
41
42
|
|
43
|
+
|
44
|
+
|
45
|
+
- 通常の関数として使う場合、引数 self が必要
|
46
|
+
|
47
|
+
- bind で登録する関数には、引数 event が渡される
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
と、引数が一致しない為に起こっています。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
`lambda event: ch2.callback(self, event)` は関数に直すと
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
```
|
60
|
+
|
61
|
+
def func(event):
|
62
|
+
|
63
|
+
# self は外側のスコープから参照
|
64
|
+
|
65
|
+
return ch2.callback(self, event)
|
66
|
+
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
という風に、`def callback(self, event):` に引数を合わせる為の式になります。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
----
|
42
78
|
|
43
79
|
## 改善策: 分割方法について、
|
44
80
|
|