回答編集履歴

4

説明捕捉

2020/04/02 09:28

投稿

teamikl
teamikl

スコア8664

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 を使わない表記を追加

2020/04/02 09:28

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -58,11 +58,15 @@
58
58
 
59
59
  ```
60
60
 
61
- def func(event):
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

説明補足

2020/04/02 09:20

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -42,9 +42,9 @@
42
42
 
43
43
 
44
44
 
45
- - 通常の関数として使う場合、引数 self が必要
45
+ - メソッドをクラスの外に出し、通常の関数として使う場合、引数 self が必要
46
46
 
47
- - bind で登録する関数には、引数 event が渡される
47
+ - bind で登録した関数には、呼び出し時に引数 event が渡される
48
48
 
49
49
 
50
50
 

1

問題点についての解説を追記

2020/04/02 09:18

投稿

teamikl
teamikl

スコア8664

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