回答編集履歴
4
文章加筆
test
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
更新されるタイミングに関しては、window.read 内であっていますが、
|
2
|
+
このコードでは time.sleep 自体が問題箇所です。
|
3
|
+
|
1
4
|
「イベント駆動型」のプログラムでは
|
2
5
|
イベントループの処理を阻害するような操作を行ってはいけません。
|
3
6
|
|
@@ -33,6 +36,7 @@
|
|
33
36
|
window.read() のタイミングで描画が更新されるのはそのとおりですが、
|
34
37
|
他にも多くの役割を担っていて、
|
35
38
|
window.read() ではイベントが発生するまで待機しています。
|
39
|
+
|
36
40
|
下のコードは、イベントを読み飛ばしているので
|
37
41
|
プログラムが大規模になってくると、面倒な不具合の原因に成ります。
|
38
42
|
window.read() はループ内で一箇所にしましょう。
|
3
文章修正、コードは3秒ではなかった
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
window.read がsleepの間呼ばれない⇛表示が更新されない
|
19
19
|
となってます。コードの動作としては正しい挙動で、
|
20
20
|
|
21
|
-
|
21
|
+
一定時間後に何かを行いたい場合は、
|
22
22
|
こういったイベント駆動型のプログラムでは、スレッドや
|
23
23
|
イベントループが提供するタイマー機能を利用します。
|
24
24
|
|
2
文章修正
test
CHANGED
@@ -34,5 +34,5 @@
|
|
34
34
|
他にも多くの役割を担っていて、
|
35
35
|
window.read() ではイベントが発生するまで待機しています。
|
36
36
|
下のコードは、イベントを読み飛ばしているので
|
37
|
-
プログラムが大規模になってくると、面倒な不具合の原因に
|
37
|
+
プログラムが大規模になってくると、面倒な不具合の原因に成ります。
|
38
38
|
window.read() はループ内で一箇所にしましょう。
|
1
注意点を追記
test
CHANGED
@@ -26,8 +26,9 @@
|
|
26
26
|
スレッドを用いたデモがあります。
|
27
27
|
https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Multithreaded_Long_Tasks.py
|
28
28
|
- time.sleep を使っていますが、別スレッドでの実行なので window.read() を阻害しません
|
29
|
-
- 別スレッドからGUIスレッド更新のためにwrite_event_valueを使います
|
29
|
+
- 別スレッドからGUIスレッド更新通知のためにwrite_event_valueを使います
|
30
30
|
別スレッド内で直接 GUI操作はしてはいけません(マルチスレッドなので安全でない操作)
|
31
|
+
GUIの表示更新は必ずイベントループ側で行います。
|
31
32
|
|
32
33
|
window.read() のタイミングで描画が更新されるのはそのとおりですが、
|
33
34
|
他にも多くの役割を担っていて、
|