回答編集履歴
3
コード説明補足
test
CHANGED
@@ -15,9 +15,9 @@
|
|
15
15
|
var.set(num)
|
16
16
|
|
17
17
|
onEnter = onEnterGen()
|
18
|
-
next(onEnter)
|
18
|
+
next(onEnter) # 関数内の yield 位置まで実行を進める
|
19
19
|
|
20
|
-
root.bind_all("<Return>", onEnter.send)
|
20
|
+
root.bind_all("<Return>", onEnter.send) # イベントが発生すると yield の左辺に値を渡す
|
21
21
|
root.mainloop()
|
22
22
|
```
|
23
23
|
|
2
変数名修正
test
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
# ※ここでは仮データとして数列を利用します。
|
33
33
|
# 実際は glob でファイル一覧を所得
|
34
|
-
file
|
34
|
+
files = iter(range(20))
|
35
35
|
|
36
36
|
root = tk.Tk()
|
37
37
|
var = tk.IntVar(root, value=0)
|
@@ -39,7 +39,7 @@
|
|
39
39
|
label.pack()
|
40
40
|
|
41
41
|
def onEnter(event):
|
42
|
-
item = next(file
|
42
|
+
item = next(files, None) # files から次の要素を所得
|
43
43
|
if item:
|
44
44
|
var.set(item) # 実際はここで画像表示
|
45
45
|
root.bind_all("<Return>", onEnter)
|
1
双方向ジェネレーターについて補足
test
CHANGED
@@ -21,8 +21,8 @@
|
|
21
21
|
root.mainloop()
|
22
22
|
```
|
23
23
|
|
24
|
-
実装としては、
|
24
|
+
実装としてはイベントハンドラ内でfor文は用いずに、
|
25
|
-
- 関数外部でファイル一覧
|
25
|
+
- 関数外部でファイル一覧を所得し
|
26
26
|
- 関数内では組み込み関数の next でリストから次の値を順に取り出す
|
27
27
|
とした方が扱いやすくなります。
|
28
28
|
|
@@ -39,7 +39,7 @@
|
|
39
39
|
label.pack()
|
40
40
|
|
41
41
|
def onEnter(event):
|
42
|
-
item = next(filelist, None)
|
42
|
+
item = next(filelist, None) # filelistから次の要素を所得
|
43
43
|
if item:
|
44
44
|
var.set(item) # 実際はここで画像表示
|
45
45
|
root.bind_all("<Return>", onEnter)
|