teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードの内容修正

2017/10/06 04:01

投稿

退会済みユーザー
answer CHANGED
@@ -1,9 +1,25 @@
1
- 下記のようにするといかがでしょうか。
1
+ 修正しました。下記のようにするといかがでしょうか。
2
2
 
3
3
  ```python
4
+ import tkinter as tk
5
+
6
+ root = tk.Tk()
7
+
8
+ class App:
9
+ count = 0
10
+ def btn_action(self, event):
11
+ self.count += 1
12
+ # コンソールへの出力
13
+ print(self.count)
14
+ # ボタンのラベル変更
15
+ event.widget.config(text="count: %s" % self.count)
16
+
4
17
  app = App()
5
- btn = tk.Button(root, text="count")
18
+ btn = tk.Button(root,text="count")
6
- btn.bind("<Button-1>", app.btn_action)
19
+ btn.bind("<Button-1>",app.btn_action)
20
+
21
+ btn.pack()
22
+ root.mainloop()
7
23
  ```
8
24
 
9
25
  bindの第2引数はコールバックしたいメソッドを指定します。
@@ -15,4 +31,13 @@
15
31
  Traceback (most recent call last):
16
32
  File "<stdin>", line 1, in <module>
17
33
  TypeError: 'int' object is not callable
18
- ```
34
+ ```
35
+
36
+ ---
37
+ 追記:
38
+ 失礼しました。
39
+ Tkの実行確認までしていなかったのでお手数おかけしました。
40
+ 最初の解答内容で実行した際はbtn_actionに引数が2つ渡されている、というエラーになったのではないかと思います。
41
+
42
+ 上記コードでは期待の動作となるでしょうか。
43
+ このコードではbtn_actionメソッドからreturn文を削除させて頂いています。