回答編集履歴

3

コード説明補足

2022/05/02 10:15

投稿

teamikl
teamikl

スコア8664

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

変数名修正

2022/05/02 10:13

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -31,7 +31,7 @@
31
31
 
32
32
  # ※ここでは仮データとして数列を利用します。
33
33
  # 実際は glob でファイル一覧を所得
34
- filelist = iter(range(20))
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(filelist, None) # filelistから次の要素を所得
42
+ item = next(files, None) # files から次の要素を所得
43
43
  if item:
44
44
  var.set(item) # 実際はここで画像表示
45
45
  root.bind_all("<Return>", onEnter)

1

双方向ジェネレーターについて補足

2022/05/02 10:08

投稿

teamikl
teamikl

スコア8664

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)