質問編集履歴

2

質問内容追記

2018/03/08 08:56

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
@@ -1 +1 @@
1
- 文法がどう間違っているのか、ご教授いただきたい。
1
+ エラーの読み方が分からない、また、文法がどう間違っているのか、ご教授いただきたい。
test CHANGED
File without changes

1

質問内容を変更

2018/03/08 08:56

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
@@ -1 +1 @@
1
- どうってエラーを取ればよいのか、エラー文を読んでも分からない。
1
+ 文法がどう間違っていのか、ご教授ただきたい
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- エラーを取りたい。
3
+ 文法ミスがなぜ起こっているのか理解したい。
4
4
 
5
5
 
6
6
 
@@ -12,484 +12,462 @@
12
12
 
13
13
  ### 発生している問題・エラーメッセージ
14
14
 
15
+ frame = F(container, self) ← このコードにエラー文がでるのだが、間違っている理由が、分からない。
16
+
17
+
18
+
19
+
20
+
21
+ ### 該当のソースコード
22
+
23
+
24
+
25
+ ```python
26
+
27
+ # -*- coding: utf-8 -*-
28
+
29
+
30
+
31
+ #=========================================================================
32
+
15
- ー文:
33
+ # イブラリ
34
+
35
+ #=========================================================================
36
+
37
+ # GUIを扱う
38
+
39
+ import tkinter as tk
40
+
41
+ # tkinterよりデザインが良くなる
42
+
43
+ from tkinter import ttk
44
+
45
+
46
+
47
+ #=========================================================================
48
+
49
+ # クラス定義
50
+
51
+ #=========================================================================
52
+
53
+ #-------------------------------------------------------------------------
54
+
55
+ # メインクラス (継承 : tk.Tk)
56
+
57
+ #-------------------------------------------------------------------------
58
+
59
+ class WordPracticeApp(tk.Tk):
60
+
61
+
62
+
63
+ #--- コンストラクタ
64
+
65
+ def __init__(self, *args, **kwargs):
66
+
67
+
68
+
69
+ # 初期化
70
+
71
+ tk.Tk.__init__(self, *args, **kwargs)
72
+
73
+
74
+
75
+ # コンテナのフレームを生成
76
+
77
+ container = tk.Frame(self)
78
+
79
+
80
+
81
+ # コンテナ配置
82
+
83
+ container.pack(side="top", fill="both", expand=True)
84
+
85
+
86
+
87
+ # コンテナのグリッドを 1x1 にする
88
+
89
+ container.grid_rowconfigure(0, weight=1)
90
+
91
+ container.grid_columnconfigure(0, weight=1)
92
+
93
+
94
+
95
+ # フレームを格納する配列
96
+
97
+ self.frames = {}
98
+
99
+
100
+
101
+ # ページを格納する配列
102
+
103
+ pages = (
104
+
105
+ StartPage,
106
+
107
+ InputNamePage,
108
+
109
+ OptionSelectPage
110
+
111
+ )
112
+
113
+
114
+
115
+ # それぞれのページに対して
116
+
117
+ for F in pages:
118
+
119
+ # フレームを生成
120
+
121
+ frame = F(container, self)
122
+
123
+
124
+
125
+ # フレームを格納
126
+
127
+ self.frames[F] = frame
128
+
129
+
130
+
131
+ # フレームを配置
132
+
133
+ frame.grid(row=0, column=0, sticky="nsew")
134
+
135
+
136
+
137
+
138
+
139
+ # スタートページを表示
140
+
141
+ self.show_frame(StartPage)
142
+
143
+
144
+
145
+
146
+
147
+ #--- フレームを表示
148
+
149
+ def show_frame(self, cont):
150
+
151
+
152
+
153
+ # WordPracticeAppのcontのフレームを格納
154
+
155
+ frame = self.frames[cont]
156
+
157
+
158
+
159
+ # そのフレームを上位層へ
160
+
161
+ frame.tkraise()
162
+
163
+
164
+
165
+
166
+
167
+ #-------------------------------------------------------------------------
168
+
169
+ # スタートページクラス (継承 : tk.Frame)
170
+
171
+ #-------------------------------------------------------------------------
172
+
173
+ class StartPage(tk.Frame):
174
+
175
+
176
+
177
+ #--- コンストラクタ
178
+
179
+ def __init__(self, parent, contoroller):
180
+
181
+
182
+
183
+ # 初期化
184
+
185
+ tk.Frame.__init__(self, parent)
186
+
187
+
188
+
189
+ ### タイトル表示
190
+
191
+ #--- ラベル生成
192
+
193
+ # 空白
194
+
195
+ spaceLabel1 = [tk.Label(self, text="") for column in range(10)]
196
+
197
+ spaceLabel2 = [tk.Label(self, text="") for column in range(3)]
198
+
199
+ # タイトル
200
+
201
+ titleLabelFont = ("Helevetice", 32, "bold")
202
+
203
+ titleLabel = ttk.Label(self,\
204
+
205
+ text="WORDPRACTICE",\
206
+
207
+ font=titleLabelFont)
208
+
209
+
210
+
211
+ #--- ラベル配置
212
+
213
+ # 空白
214
+
215
+ for index in range(10):
216
+
217
+ spaceLabel1[index].pack()
218
+
219
+ # タイトル
220
+
221
+ titleLabel.pack()
222
+
223
+
224
+
225
+ ### ボタン表示
226
+
227
+ #--- ボタン生成
228
+
229
+ startButton =\
230
+
231
+ ttk.Button( self, text=" Start ",\
232
+
233
+ command=lambda : controller.show_frame(InputNamePage) )
234
+
235
+
236
+
237
+ #--- ボタン配置
238
+
239
+ # 空白
240
+
241
+ for index in range(3):
242
+
243
+ spaceLabel2[index].pack()
244
+
245
+ # ボタン
246
+
247
+ startButton.pack()
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+ #-------------------------------------------------------------------------
256
+
257
+ # 名前入力ページクラス (継承 : tk.Frame)
258
+
259
+ #-------------------------------------------------------------------------
260
+
261
+ class InputNamePage(tk.Frame):
262
+
263
+
264
+
265
+ #--- コンストラクタ
266
+
267
+ def _init__(self, parent, controller):
268
+
269
+
270
+
271
+ # 初期化
272
+
273
+ tk.Frame.__init__(self, parent)
274
+
275
+
276
+
277
+ ### タイトル表示
278
+
279
+ #--- ラベル生成
280
+
281
+ # 空白
282
+
283
+ spaceLabel1 = [tk.Label(self, text="") for column in range(5)]
284
+
285
+ # タイトル
286
+
287
+ titleLabelFont = ("Helevetice", 18)
288
+
289
+ titleLabel =\
290
+
291
+ ttk.Label(self,\
292
+
293
+ text="ユーザー名を入力してください。",\
294
+
295
+ font=titleLabelFont)
296
+
297
+
298
+
299
+ #--- ラベル配置
300
+
301
+ # 空白
302
+
303
+ for index in range(5):
304
+
305
+ spaceLabel1[index].pack()
306
+
307
+ # タイトル
308
+
309
+ titleLabel.pack()
310
+
311
+
312
+
313
+
314
+
315
+ ### フレーム表示
316
+
317
+ #--- フレーム生成
318
+
319
+ frame = ttk.Frame(self)
320
+
321
+ #--- フレーム配置
322
+
323
+ frame.pack()
324
+
325
+
326
+
327
+
328
+
329
+ ### ユーザー名入力表示
330
+
331
+ #--- ラベル生成
332
+
333
+ # 空白
334
+
335
+ spaceLabel2 = [tk.Label(frame, text="") for column in range(3)]
336
+
337
+
338
+
339
+ # ユーザー名
340
+
341
+ userNameLabelFont = ("Helevetice", 14)
342
+
343
+ userNameLabel =\
344
+
345
+ ttk.Label(frame, text="ユーザー名:", font=userNameLabelFont)
346
+
347
+
348
+
349
+ #--- ラベル配置
350
+
351
+ # 空白
352
+
353
+ for index in range(3):
354
+
355
+ spaceLabel2[index].grid(row=index, column=0)
356
+
357
+ # ユーザー名
358
+
359
+ userNameLabel.grid(row=4, column=0)
360
+
361
+
362
+
363
+ #--- エントリー生成
364
+
365
+ userName = tk.StringVar()
366
+
367
+ userNameEntry = ttk.Entry(frame, textvariable=userName, width=30)
368
+
369
+
370
+
371
+ #--- エントリー配置
372
+
373
+ userNameEntry.grid(row=4, column=1)
374
+
375
+
376
+
377
+
378
+
379
+ ### ボタン表示
380
+
381
+ #--- ボタン生成
382
+
383
+ okButton = ttk.Button( frame, text=" OK ",\
384
+
385
+ command=lambda :\
386
+
387
+ controller.show_frame(OptionSelectPage) )
388
+
389
+
390
+
391
+ #--- ボタン配置
392
+
393
+ okButton.grid(row=4, column=3)
394
+
395
+
396
+
397
+
398
+
399
+ #-------------------------------------------------------------------------
400
+
401
+ # 問題形式選択ページクラス (継承 : tk.Frame)
402
+
403
+ #-------------------------------------------------------------------------
404
+
405
+ class OptionSelectPage(tk.Frame):
406
+
407
+
408
+
409
+ #--- コンストラクタ
410
+
411
+ def _init__(self, parent, controller):
412
+
413
+
414
+
415
+ # 初期化
416
+
417
+ tk.Frame.__init__(self, parent)
418
+
419
+
420
+
421
+ ### タイトル表示
422
+
423
+ #--- ラベル生成
424
+
425
+ # 空白
426
+
427
+ spaceLabel1 = [tk.Label(self, text="") for column in range(5)]
428
+
429
+ # タイトル
430
+
431
+ titleLabelFont = ("Helevetice", 18)
432
+
433
+ titleLabel =\
434
+
435
+ ttk.Label(self,\
436
+
437
+ text="問題形式を選択してください。",\
438
+
439
+ font=titleLabelFont)
440
+
441
+
442
+
443
+ #--- ラベル配置
444
+
445
+ # 空白
446
+
447
+ for index in range(5):
448
+
449
+ spaceLabel1[index].pack()
450
+
451
+ # タイトル
452
+
453
+ titleLabel.pack()
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+ #=========================================================================
462
+
463
+ # 本体処理
464
+
465
+ #=========================================================================
466
+
467
+ application = WordPracticeApp()
468
+
469
+ app.mainloop()
470
+
471
+
16
472
 
17
473
  ```
18
-
19
- Traceback (most recent call last):
20
-
21
- File "Window_ver1.1.py", line 210, in <module>
22
-
23
- application = WordPracticeApp()
24
-
25
- File "Window_ver1.1.py", line 48, in __init__
26
-
27
- frame = F(container, self)
28
-
29
- File "C:\Users\kaiji\Anaconda3\lib\tkinter\__init__.py", line 2738, in __init__
30
-
31
- Widget.__init__(self, master, 'frame', cnf, {}, extra)
32
-
33
- File "C:\Users\kaiji\Anaconda3\lib\tkinter\__init__.py", line 2293, in __init__
34
-
35
- (widgetName, self._w) + extra + self._options(cnf))
36
-
37
- _tkinter.TclError: unknown option "-menu"
38
-
39
- ```
40
-
41
-
42
-
43
- ### 該当のソースコード
44
-
45
-
46
-
47
- ```python
48
-
49
- # -*- coding: utf-8 -*-
50
-
51
-
52
-
53
- #=========================================================================
54
-
55
- # ライブラリ
56
-
57
- #=========================================================================
58
-
59
- # GUIを扱う
60
-
61
- import tkinter as tk
62
-
63
- # tkinterよりデザインが良くなる
64
-
65
- from tkinter import ttk
66
-
67
-
68
-
69
- #=========================================================================
70
-
71
- # クラス定義
72
-
73
- #=========================================================================
74
-
75
- #-------------------------------------------------------------------------
76
-
77
- # メインクラス (継承 : tk.Tk)
78
-
79
- #-------------------------------------------------------------------------
80
-
81
- class WordPracticeApp(tk.Tk):
82
-
83
-
84
-
85
- #--- コンストラクタ
86
-
87
- def __init__(self, *args, **kwargs):
88
-
89
-
90
-
91
- # 初期化
92
-
93
- tk.Tk.__init__(self, *args, **kwargs)
94
-
95
-
96
-
97
- # コンテナのフレームを生成
98
-
99
- container = tk.Frame(self)
100
-
101
-
102
-
103
- # コンテナ配置
104
-
105
- container.pack(side="top", fill="both", expand=True)
106
-
107
-
108
-
109
- # コンテナのグリッドを 1x1 にする
110
-
111
- container.grid_rowconfigure(0, weight=1)
112
-
113
- container.grid_columnconfigure(0, weight=1)
114
-
115
-
116
-
117
- # フレームを格納する配列
118
-
119
- self.frames = {}
120
-
121
-
122
-
123
- # ページを格納する配列
124
-
125
- pages = (
126
-
127
- StartPage,
128
-
129
- InputNamePage,
130
-
131
- OptionSelectPage
132
-
133
- )
134
-
135
-
136
-
137
- # それぞれのページに対して
138
-
139
- for F in pages:
140
-
141
- # フレームを生成
142
-
143
- frame = F(container, self)
144
-
145
-
146
-
147
- # フレームを格納
148
-
149
- self.frames[F] = frame
150
-
151
-
152
-
153
- # フレームを配置
154
-
155
- frame.grid(row=0, column=0, sticky="nsew")
156
-
157
-
158
-
159
-
160
-
161
- # スタートページを表示
162
-
163
- self.show_frame(StartPage)
164
-
165
-
166
-
167
-
168
-
169
- #--- フレームを表示
170
-
171
- def show_frame(self, cont):
172
-
173
-
174
-
175
- # WordPracticeAppのcontのフレームを格納
176
-
177
- frame = self.frames[cont]
178
-
179
-
180
-
181
- # そのフレームを上位層へ
182
-
183
- frame.tkraise()
184
-
185
-
186
-
187
-
188
-
189
- #-------------------------------------------------------------------------
190
-
191
- # スタートページクラス (継承 : tk.Frame)
192
-
193
- #-------------------------------------------------------------------------
194
-
195
- class StartPage(tk.Frame):
196
-
197
-
198
-
199
- #--- コンストラクタ
200
-
201
- def __init__(self, parent, contoroller):
202
-
203
-
204
-
205
- # 初期化
206
-
207
- tk.Frame.__init__(self, parent)
208
-
209
-
210
-
211
- ### タイトル表示
212
-
213
- #--- ラベル生成
214
-
215
- # 空白
216
-
217
- spaceLabel1 = [tk.Label(self, text="") for column in range(10)]
218
-
219
- spaceLabel2 = [tk.Label(self, text="") for column in range(3)]
220
-
221
- # タイトル
222
-
223
- titleLabelFont = ("Helevetice", 32, "bold")
224
-
225
- titleLabel = ttk.Label(self,\
226
-
227
- text="WORDPRACTICE",\
228
-
229
- font=titleLabelFont)
230
-
231
-
232
-
233
- #--- ラベル配置
234
-
235
- # 空白
236
-
237
- for index in range(10):
238
-
239
- spaceLabel1[index].pack()
240
-
241
- # タイトル
242
-
243
- titleLabel.pack()
244
-
245
-
246
-
247
- ### ボタン表示
248
-
249
- #--- ボタン生成
250
-
251
- startButton =\
252
-
253
- ttk.Button( self, text=" Start ",\
254
-
255
- command=lambda : controller.show_frame(InputNamePage) )
256
-
257
-
258
-
259
- #--- ボタン配置
260
-
261
- # 空白
262
-
263
- for index in range(3):
264
-
265
- spaceLabel2[index].pack()
266
-
267
- # ボタン
268
-
269
- startButton.pack()
270
-
271
-
272
-
273
-
274
-
275
-
276
-
277
- #-------------------------------------------------------------------------
278
-
279
- # 名前入力ページクラス (継承 : tk.Frame)
280
-
281
- #-------------------------------------------------------------------------
282
-
283
- class InputNamePage(tk.Frame):
284
-
285
-
286
-
287
- #--- コンストラクタ
288
-
289
- def _init__(self, parent, controller):
290
-
291
-
292
-
293
- # 初期化
294
-
295
- tk.Frame.__init__(self, parent)
296
-
297
-
298
-
299
- ### タイトル表示
300
-
301
- #--- ラベル生成
302
-
303
- # 空白
304
-
305
- spaceLabel1 = [tk.Label(self, text="") for column in range(5)]
306
-
307
- # タイトル
308
-
309
- titleLabelFont = ("Helevetice", 18)
310
-
311
- titleLabel =\
312
-
313
- ttk.Label(self,\
314
-
315
- text="ユーザー名を入力してください。",\
316
-
317
- font=titleLabelFont)
318
-
319
-
320
-
321
- #--- ラベル配置
322
-
323
- # 空白
324
-
325
- for index in range(5):
326
-
327
- spaceLabel1[index].pack()
328
-
329
- # タイトル
330
-
331
- titleLabel.pack()
332
-
333
-
334
-
335
-
336
-
337
- ### フレーム表示
338
-
339
- #--- フレーム生成
340
-
341
- frame = ttk.Frame(self)
342
-
343
- #--- フレーム配置
344
-
345
- frame.pack()
346
-
347
-
348
-
349
-
350
-
351
- ### ユーザー名入力表示
352
-
353
- #--- ラベル生成
354
-
355
- # 空白
356
-
357
- spaceLabel2 = [tk.Label(frame, text="") for column in range(3)]
358
-
359
-
360
-
361
- # ユーザー名
362
-
363
- userNameLabelFont = ("Helevetice", 14)
364
-
365
- userNameLabel =\
366
-
367
- ttk.Label(frame, text="ユーザー名:", font=userNameLabelFont)
368
-
369
-
370
-
371
- #--- ラベル配置
372
-
373
- # 空白
374
-
375
- for index in range(3):
376
-
377
- spaceLabel2[index].grid(row=index, column=0)
378
-
379
- # ユーザー名
380
-
381
- userNameLabel.grid(row=4, column=0)
382
-
383
-
384
-
385
- #--- エントリー生成
386
-
387
- userName = tk.StringVar()
388
-
389
- userNameEntry = ttk.Entry(frame, textvariable=userName, width=30)
390
-
391
-
392
-
393
- #--- エントリー配置
394
-
395
- userNameEntry.grid(row=4, column=1)
396
-
397
-
398
-
399
-
400
-
401
- ### ボタン表示
402
-
403
- #--- ボタン生成
404
-
405
- okButton = ttk.Button( frame, text=" OK ",\
406
-
407
- command=lambda :\
408
-
409
- controller.show_frame(OptionSelectPage) )
410
-
411
-
412
-
413
- #--- ボタン配置
414
-
415
- okButton.grid(row=4, column=3)
416
-
417
-
418
-
419
-
420
-
421
- #-------------------------------------------------------------------------
422
-
423
- # 問題形式選択ページクラス (継承 : tk.Frame)
424
-
425
- #-------------------------------------------------------------------------
426
-
427
- class OptionSelectPage(tk.Frame):
428
-
429
-
430
-
431
- #--- コンストラクタ
432
-
433
- def _init__(self, parent, controller):
434
-
435
-
436
-
437
- # 初期化
438
-
439
- tk.Frame.__init__(self, parent)
440
-
441
-
442
-
443
- ### タイトル表示
444
-
445
- #--- ラベル生成
446
-
447
- # 空白
448
-
449
- spaceLabel1 = [tk.Label(self, text="") for column in range(5)]
450
-
451
- # タイトル
452
-
453
- titleLabelFont = ("Helevetice", 18)
454
-
455
- titleLabel =\
456
-
457
- ttk.Label(self,\
458
-
459
- text="問題形式を選択してください。",\
460
-
461
- font=titleLabelFont)
462
-
463
-
464
-
465
- #--- ラベル配置
466
-
467
- # 空白
468
-
469
- for index in range(5):
470
-
471
- spaceLabel1[index].pack()
472
-
473
- # タイトル
474
-
475
- titleLabel.pack()
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
- #=========================================================================
484
-
485
- # 本体処理
486
-
487
- #=========================================================================
488
-
489
- application = WordPracticeApp()
490
-
491
- app.mainloop()
492
-
493
-
494
-
495
- ```