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

回答編集履歴

3

修正箇所について追記

2020/06/01 12:22

投稿

teamikl
teamikl

スコア8824

answer CHANGED
@@ -25,20 +25,34 @@
25
25
 
26
26
  root = tkinter.Tk()
27
27
 
28
+ # XXX: このコードで同じエラーを再現できます。
28
29
  create_num = root.Entry(root)
29
30
  ```
30
31
 
31
- 修正方法、Tk()のインスタンスと、ttkモジュールを区別します
32
+ 修正方法、Tk()のインスタンスと、ttkモジュールを区別します
32
33
 
34
+ root が未定義なので、
35
+ 元の参考にしたコードで root 変数がどのように作られてるのか確認しましょう。
36
+ Tk のインスタンスと、ttkモジュールを混同してしまってます。
37
+
38
+ 実際の修正箇所は以下の通りです
33
39
  ```python
34
40
  import tkinter
35
41
  from tkinter import ttk
36
42
 
43
+ # XXX: root = 1 は削除
44
+
45
+ # Tkクラス生成
37
46
  root = tkinter.Tk()
47
+ # 画面サイズ
48
+ root.geometry('300x200')
49
+ # 画面タイトル
50
+ root.title('')
38
51
 
39
- create_num = ttk.Entry(root) # <-- tkk モジュールの Entry クラスを使う
40
52
  ```
41
53
 
42
- root が未定義なので
54
+ クラスの部分 `ttk.Entry(root)` についてはttk/root を区別するように修正すれば変更不要です。
43
- 元の参考にしたコードで root 変数がどのよう作られてるか確認ししょう
55
+ `from tkinter import ttk` で事前モジュールみ読み込んでおき
56
+
44
- Tk インスタンスとttkモジュールを混同してしまってま
57
+ 今回質問のエラーは本来モジュールのクラス参照る部分を
58
+ 別の同名変数を作ってしまったことによるものです。

2

コードの抜粋箇所について修正

2020/06/01 12:22

投稿

teamikl
teamikl

スコア8824

answer CHANGED
@@ -4,8 +4,10 @@
4
4
 
5
5
  ttk = Tk()
6
6
 
7
+ # 省略
7
8
 
9
+ #チェックボックスを作りたい個数を入力
8
- ttk.Entry(root)
10
+ create_num = ttk.Entry(root)
9
11
  ```
10
12
 
11
13
  双方は個別に見た場合はエラー無く実行可能出来るコードですが、
@@ -22,7 +24,8 @@
22
24
  import tkinter
23
25
 
24
26
  root = tkinter.Tk()
27
+
25
- root.Entry(root)
28
+ create_num = root.Entry(root)
26
29
  ```
27
30
 
28
31
  修正方法、Tk()のインスタンスと、ttkモジュールを区別します
@@ -33,7 +36,7 @@
33
36
 
34
37
  root = tkinter.Tk()
35
38
 
36
- ttk.Entry(root) # <-- tkk モジュールの Entry クラスを使う
39
+ create_num = ttk.Entry(root) # <-- tkk モジュールの Entry クラスを使う
37
40
  ```
38
41
 
39
42
  root が未定義なので、

1

途中送信してしまったので修正

2020/06/01 11:35

投稿

teamikl
teamikl

スコア8824

answer CHANGED
@@ -11,7 +11,13 @@
11
11
  双方は個別に見た場合はエラー無く実行可能出来るコードですが、
12
12
  問題点はここで ttk という変数名を使った点。
13
13
 
14
+ tkinter のコードでは、
15
+ 通常 "ttk" は `from tkinter import ttk` として
16
+ "tkinter.ttk" モジュールを指します。
14
17
 
18
+ Tk() のインスタンスに Entry は有りません。
19
+ 変数名を変えてみると、おかしなところが解ると思います。
20
+
15
21
  ```python
16
22
  import tkinter
17
23
 
@@ -19,6 +25,8 @@
19
25
  root.Entry(root)
20
26
  ```
21
27
 
28
+ 修正方法、Tk()のインスタンスと、ttkモジュールを区別します
29
+
22
30
  ```python
23
31
  import tkinter
24
32
  from tkinter import ttk
@@ -28,11 +36,6 @@
28
36
  ttk.Entry(root) # <-- tkk モジュールの Entry クラスを使う
29
37
  ```
30
38
 
31
-
32
- tkinter のコードでは、
33
- 通常 "ttk" は `from tkinter import ttk` として
34
- "tkinter.ttk" モジュールを指します。
35
-
36
39
  root が未定義なので、
37
40
  元の参考にしたコードで root 変数がどのように作られてるのか確認しましょう。
38
41
  Tk のインスタンスと、ttkモジュールを混同してしまってます。