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

回答編集履歴

1

エラー内容について説明を追記

2020/11/02 16:14

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -3,4 +3,26 @@
3
3
  + root=tkinter.Tk()
4
4
  ```
5
5
 
6
- tkinter.Tk はクラスなので、呼び出してインスタンスを生成する必要があります。
6
+ tkinter.Tk はクラスなので、呼び出してインスタンスを生成する必要があります。
7
+
8
+ ----
9
+ エラー内容については、解りにくいですが
10
+
11
+ 通常、Pythonのメソッドを定義する際には、第一引数にはそのクラスのインスタンスが渡されます。
12
+
13
+ ですが、インスタンスを生成せずに呼び出すことになっているため、
14
+ 本来インスタンスを受け取る変数に、引数に与えた文字列が渡され、
15
+ 文字列のインスタンス変数を参照しようとしてエラーとなってます。
16
+
17
+
18
+ ```python
19
+ class Tk:
20
+ def title(self, arg=None):
21
+ return self.tk.call('wm', 'title', self._w, arg)
22
+
23
+ root = Tk()
24
+ root.title("test") # OK
25
+
26
+ root = Tk # インスタンス化を忘れると、メソッドを呼び出した時の引数がずれて
27
+ root.title("test") # => "test".tk.call('wm', 'title', "title"._w, None)
28
+ ```