回答編集履歴
8
追記
test
CHANGED
@@ -8,17 +8,17 @@
|
|
8
8
|
|
9
9
|
1-1, `__init__(self):` を追加しwhen_list,where_list の初期化はそちらで行うように
|
10
10
|
|
11
|
-
1-2. getXXX,setXXXは全部削除
|
11
|
+
1-2. `getXXX`,`setXXX`は全部削除
|
12
|
-
|
12
|
+
|
13
|
-
1-3. buttonClickは
|
13
|
+
1-3. `buttonClick`は4WHDを生成してジェネレータを返すだけに。(あと関数名を変更)
|
14
|
-
|
14
|
+
|
15
|
-
1-4. random.randintではなくrandom.choiceを使用するように変更
|
15
|
+
1-4. `random.randint`ではなく`random.choice`を使用するように変更
|
16
|
-
|
16
|
+
|
17
|
-
0. ttk.Frameを管理するクラスMyFrameを作成
|
17
|
+
0. ttk.Frameを管理するクラス`MyFrame`を作成
|
18
|
-
|
18
|
+
|
19
|
-
0. 内部にWordのインスタンスを保持
|
19
|
+
0. 内部に`Word`のインスタンスを保持
|
20
|
-
|
20
|
+
|
21
|
-
0. MyFrameにbuttonClick関数を新規に作成し、Wordクラスから(1)の処理の取得とLableの更新を行うように。
|
21
|
+
0. `MyFrame`に`buttonClick`関数を新規に作成し、Wordクラスから(1)の処理の取得とLableの更新を行うように。
|
22
22
|
|
23
23
|
|
24
24
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
self.where_list = ['東京', '埼玉']
|
48
48
|
|
49
|
-
self.who_list = ['
|
49
|
+
self.who_list = ['私', 'あなた']
|
50
50
|
|
51
51
|
self.with_who = ['東京', '埼玉']
|
52
52
|
|
@@ -56,11 +56,21 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
def get
|
59
|
+
def get4WHD(self):
|
60
|
-
|
60
|
+
|
61
|
-
|
61
|
+
yield choice(self.when_list)
|
62
|
-
|
62
|
+
|
63
|
-
|
63
|
+
yield choice(self.where_list)
|
64
|
+
|
65
|
+
yield choice(self.who_list)
|
66
|
+
|
67
|
+
yield choice(self.with_who)
|
68
|
+
|
69
|
+
yield choice(self.how_list)
|
70
|
+
|
71
|
+
yield choice(self.do_list)
|
72
|
+
|
73
|
+
|
64
74
|
|
65
75
|
|
66
76
|
|
@@ -228,7 +238,7 @@
|
|
228
238
|
|
229
239
|
def set_answer(self):
|
230
240
|
|
231
|
-
for i, v in enumerate(self.word.get
|
241
|
+
for i, v in enumerate(self.word.get4WHD()):
|
232
242
|
|
233
243
|
self.label_answer[i].configure(text=v)
|
234
244
|
|
7
追記
test
CHANGED
@@ -46,11 +46,21 @@
|
|
46
46
|
|
47
47
|
self.where_list = ['東京', '埼玉']
|
48
48
|
|
49
|
+
self.who_list = ['東京', '埼玉']
|
50
|
+
|
51
|
+
self.with_who = ['東京', '埼玉']
|
52
|
+
|
53
|
+
self.how_list = ['東京', '埼玉']
|
54
|
+
|
55
|
+
self.do_list = ['東京', '埼玉']
|
56
|
+
|
49
57
|
|
50
58
|
|
51
59
|
def get5W1H(self) -> list:
|
52
60
|
|
53
|
-
return [choice(self.when_list), choice(self.where_list)
|
61
|
+
return [choice(self.when_list), choice(self.where_list), choice(self.who_list)
|
62
|
+
|
63
|
+
, choice(self.with_who),choice(self.how_list), choice(self.do_list)]
|
54
64
|
|
55
65
|
|
56
66
|
|
@@ -66,37 +76,167 @@
|
|
66
76
|
|
67
77
|
self.word = Word()
|
68
78
|
|
79
|
+
|
80
|
+
|
81
|
+
# プログラムの題名みたいなのを描写する用ののラベル
|
82
|
+
|
83
|
+
self.label_title = ttk.Label(
|
84
|
+
|
85
|
+
root,
|
86
|
+
|
87
|
+
text="「 いつどこでだれがだれとどのようになにをした 」",
|
88
|
+
|
89
|
+
background=("#ffffff"),
|
90
|
+
|
91
|
+
padding=(50, 5)
|
92
|
+
|
93
|
+
)
|
94
|
+
|
95
|
+
self.label_title.grid(row=0, column=0, padx=10, pady=10, columnspan=6)
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
# 「いつ」という文字を表示するようのラベル
|
100
|
+
|
101
|
+
self.label_when = ttk.Label(
|
102
|
+
|
103
|
+
root,
|
104
|
+
|
105
|
+
text="いつ",
|
106
|
+
|
107
|
+
background=("#ffff00"),
|
108
|
+
|
109
|
+
padding=(50, 5)
|
110
|
+
|
111
|
+
)
|
112
|
+
|
113
|
+
self.label_when.grid(row=1, column=0, padx=10, pady=10)
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
# 「どこで」という文字を表示するようのラベル
|
118
|
+
|
119
|
+
self.label_where = ttk.Label(
|
120
|
+
|
121
|
+
root,
|
122
|
+
|
123
|
+
text="どこで",
|
124
|
+
|
125
|
+
background=("#1e90ff"),
|
126
|
+
|
127
|
+
padding=(50, 5)
|
128
|
+
|
129
|
+
)
|
130
|
+
|
131
|
+
self.label_where.grid(row=1, column=1, padx=10, pady=10)
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
# 「だれが」という文字を表示するようのラベル
|
136
|
+
|
137
|
+
self.label_who = ttk.Label(
|
138
|
+
|
139
|
+
root,
|
140
|
+
|
141
|
+
text="だれが",
|
142
|
+
|
143
|
+
background=("#adff2f"),
|
144
|
+
|
145
|
+
padding=(50, 5)
|
146
|
+
|
147
|
+
)
|
148
|
+
|
149
|
+
self.label_who.grid(row=1, column=2, padx=10, pady=10)
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
# 「だれと」という文字を表示するようのラベル
|
154
|
+
|
155
|
+
self.label_with = ttk.Label(
|
156
|
+
|
157
|
+
root,
|
158
|
+
|
159
|
+
text="だれと",
|
160
|
+
|
161
|
+
background=("#f08080"),
|
162
|
+
|
163
|
+
padding=(50, 5)
|
164
|
+
|
165
|
+
)
|
166
|
+
|
167
|
+
self.label_with.grid(row=1, column=3, padx=10, pady=10)
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
# 「どのように」という文字を表示するようのラベル
|
172
|
+
|
173
|
+
self.label_how = ttk.Label(
|
174
|
+
|
175
|
+
root,
|
176
|
+
|
177
|
+
text="どのように",
|
178
|
+
|
179
|
+
background=("#ffa500"),
|
180
|
+
|
181
|
+
padding=(50, 5)
|
182
|
+
|
183
|
+
)
|
184
|
+
|
185
|
+
self.label_how.grid(row=1, column=4, padx=10, pady=10)
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
# 「なにをした」という文字を表示するようのラベル
|
190
|
+
|
191
|
+
self.label_do = ttk.Label(
|
192
|
+
|
193
|
+
root,
|
194
|
+
|
195
|
+
text="なにをした",
|
196
|
+
|
197
|
+
background=("#da70d6"),
|
198
|
+
|
199
|
+
padding=(50, 5)
|
200
|
+
|
201
|
+
)
|
202
|
+
|
203
|
+
self.label_do.grid(row=1, column=5, padx=10, pady=10)
|
204
|
+
|
205
|
+
# 結果を表示するよう
|
206
|
+
|
207
|
+
self.label_answer = (ttk.Label(root), ttk.Label(root), ttk.Label(root),
|
208
|
+
|
209
|
+
ttk.Label(root), ttk.Label(root), ttk.Label(root))
|
210
|
+
|
211
|
+
for i, l in enumerate(self.label_answer):
|
212
|
+
|
213
|
+
l.configure(background=("#ffffff"),padding=(50, 5),relief="ridge")
|
214
|
+
|
215
|
+
l.grid(row=2, column=i, padx=10, pady=10)
|
216
|
+
|
217
|
+
self.set_answer()
|
218
|
+
|
219
|
+
|
220
|
+
|
69
221
|
self.button1 = ttk.Button(
|
70
222
|
|
71
223
|
self, text="OK?",padding=(50, 5),command=self.buttonClick)
|
72
224
|
|
73
225
|
self.button1.grid(row=3, column=0, padx=10, pady=10, columnspan=6)
|
74
226
|
|
75
|
-
|
227
|
+
|
76
|
-
|
228
|
+
|
77
|
-
|
229
|
+
def set_answer(self):
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
230
|
+
|
82
|
-
|
83
|
-
for i,
|
231
|
+
for i, v in enumerate(self.word.get5W1H()):
|
84
|
-
|
85
|
-
|
232
|
+
|
86
|
-
|
87
|
-
l.
|
233
|
+
self.label_answer[i].configure(text=v)
|
88
|
-
|
89
|
-
|
90
234
|
|
91
235
|
|
92
236
|
|
93
237
|
def buttonClick(self):
|
94
238
|
|
95
|
-
when, where = self.word.get5W1H()
|
96
|
-
|
97
|
-
self.
|
239
|
+
self.set_answer()
|
98
|
-
|
99
|
-
self.label_answer[1].configure(text=where)
|
100
240
|
|
101
241
|
|
102
242
|
|
6
サンプルコードを追加
test
CHANGED
@@ -24,21 +24,29 @@
|
|
24
24
|
|
25
25
|
こんな感じでしょうか。
|
26
26
|
|
27
|
-
|
27
|
+
サンプルソースコードです。ご参考まで。
|
28
28
|
|
29
29
|
```Python
|
30
30
|
|
31
|
-
|
31
|
+
from tkinter import *
|
32
|
+
|
33
|
+
from tkinter import ttk
|
32
34
|
|
33
35
|
from random import choice
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
|
34
40
|
|
35
41
|
class Word(object):
|
36
42
|
|
37
43
|
def __init__(self):
|
38
44
|
|
39
|
-
self.when_list = ['今日','明日']
|
45
|
+
self.when_list = ['今日', '明日']
|
40
46
|
|
41
|
-
self.where_list = ['東京','埼玉']
|
47
|
+
self.where_list = ['東京', '埼玉']
|
48
|
+
|
49
|
+
|
42
50
|
|
43
51
|
def get5W1H(self) -> list:
|
44
52
|
|
@@ -46,13 +54,65 @@
|
|
46
54
|
|
47
55
|
|
48
56
|
|
57
|
+
|
58
|
+
|
59
|
+
class MyFrame(ttk.Frame):
|
60
|
+
|
61
|
+
def __init__(self, root):
|
62
|
+
|
63
|
+
super().__init__(root, height=300, width=500)
|
64
|
+
|
65
|
+
self.grid()
|
66
|
+
|
67
|
+
self.word = Word()
|
68
|
+
|
69
|
+
self.button1 = ttk.Button(
|
70
|
+
|
71
|
+
self, text="OK?",padding=(50, 5),command=self.buttonClick)
|
72
|
+
|
73
|
+
self.button1.grid(row=3, column=0, padx=10, pady=10, columnspan=6)
|
74
|
+
|
75
|
+
self.label_answer = (ttk.Label(root), ttk.Label(root), ttk.Label(root),
|
76
|
+
|
77
|
+
ttk.Label(root), ttk.Label(root), ttk.Label(root))
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
# 結果を表示するよう
|
82
|
+
|
83
|
+
for i, l in enumerate(self.label_answer):
|
84
|
+
|
85
|
+
l.configure(text="aaaa",background=("#ffffff"),padding=(50, 5),relief="ridge")
|
86
|
+
|
87
|
+
l.grid(row=2, column=i, padx=10, pady=10)
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
def buttonClick(self):
|
94
|
+
|
95
|
+
when, where = self.word.get5W1H()
|
96
|
+
|
97
|
+
self.label_answer[0].configure(text=when)
|
98
|
+
|
99
|
+
self.label_answer[1].configure(text=where)
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
49
105
|
def main() ->None:
|
50
106
|
|
51
|
-
|
107
|
+
root = Tk()
|
52
108
|
|
53
|
-
|
109
|
+
root.title("いつどこで・・・")
|
54
110
|
|
111
|
+
f = MyFrame(root)
|
112
|
+
|
55
|
-
|
113
|
+
root.mainloop()
|
114
|
+
|
115
|
+
|
56
116
|
|
57
117
|
|
58
118
|
|
5
追記
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
こんな感じでしょうか。
|
26
26
|
|
27
|
-
サンプルソースコードです。ご参考まで。
|
27
|
+
処理の1の部分のサンプルソースコードです。ご参考まで。
|
28
28
|
|
29
29
|
```Python
|
30
30
|
|
4
サンプルソースコード
test
CHANGED
@@ -23,3 +23,41 @@
|
|
23
23
|
|
24
24
|
|
25
25
|
こんな感じでしょうか。
|
26
|
+
|
27
|
+
サンプルソースコードです。ご参考まで。
|
28
|
+
|
29
|
+
```Python
|
30
|
+
|
31
|
+
# -*- coding: utf-8 -*-
|
32
|
+
|
33
|
+
from random import choice
|
34
|
+
|
35
|
+
class Word(object):
|
36
|
+
|
37
|
+
def __init__(self):
|
38
|
+
|
39
|
+
self.when_list = ['今日','明日']
|
40
|
+
|
41
|
+
self.where_list = ['東京','埼玉']
|
42
|
+
|
43
|
+
def get5W1H(self) -> list:
|
44
|
+
|
45
|
+
return [choice(self.when_list), choice(self.where_list)]
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
def main() ->None:
|
50
|
+
|
51
|
+
w = Word()
|
52
|
+
|
53
|
+
for i in range(10):
|
54
|
+
|
55
|
+
print(w.get5W1H())
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
if __name__ == '__main__':
|
60
|
+
|
61
|
+
main()
|
62
|
+
|
63
|
+
```
|
3
追記
test
CHANGED
@@ -4,7 +4,15 @@
|
|
4
4
|
|
5
5
|
私がこのプログラムを作るとしたら画面(UI)とデータは分けるので以下のような形になるかと。
|
6
6
|
|
7
|
+
1. Wordクラスを変更
|
8
|
+
|
9
|
+
1-1, `__init__(self):` を追加しwhen_list,where_list の初期化はそちらで行うように
|
10
|
+
|
11
|
+
1-2. getXXX,setXXXは全部削除
|
12
|
+
|
7
|
-
|
13
|
+
1-3. buttonClickは5W1Hを生成してlistを戻り値として返すだけに。(あと関数名を変更)
|
14
|
+
|
15
|
+
1-4. random.randintではなくrandom.choiceを使用するように変更
|
8
16
|
|
9
17
|
0. ttk.Frameを管理するクラスMyFrameを作成
|
10
18
|
|
2
追記
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
原因はWordクラスのbuttonClickの処理でLabelへの更新処理がないからだと思われますが。
|
1
|
+
原因はWordクラスのbuttonClickの処理でLabelへの更新処理(`Label.configure(text='文字列')`)がないからだと思われますが。
|
2
2
|
|
3
3
|
|
4
4
|
|
1
追記
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
原因はWordクラスのbuttonClickの処理でLabelへの更新処理がないからだと思われますが。
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
私がこのプログラムを作るとしたら画面(UI)とデータは分けるので以下のような形になるかと。
|
4
6
|
|
5
7
|
0. WordクラスのbuttonClickは5W1Hを生成してlistを戻り値として返すだけに。(あと関数名を変更)
|
6
8
|
|