回答編集履歴

1

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

2020/11/02 16:14

投稿

teamikl
teamikl

スコア8690

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