回答編集履歴
1
デモコードの解説を追記
test
CHANGED
@@ -38,8 +38,36 @@
|
|
38
38
|
|
39
39
|
参考: [公式のデモコード](https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Multithreaded_Long_Tasks.py)
|
40
40
|
|
41
|
-
- Thread を使い、時間のかかる処理は別スレッドで行う。
|
41
|
+
- (Do Long Task ボタンを押した時) Thread を使い、時間のかかる処理は別スレッドで行う。
|
42
|
+
|
43
|
+
long_operation_thread 関数を別スレッドで実行。
|
44
|
+
|
45
|
+
- 別スレッド内では時間のかかる処理、待機処理を行っても、
|
46
|
+
|
47
|
+
GUIのイベントループを阻害しないため、問題有りません。
|
42
48
|
|
43
49
|
- 別スレッドでGUIを直接変更はスレッドセーフな操作ではないので、
|
44
50
|
|
45
51
|
GUIへの反映はイベントループ側で行う。→ write_event_value で独自のイベントを通知。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
質問のケースに適応すると、
|
56
|
+
|
57
|
+
1) tweepy での処理を別スレッドで行う。
|
58
|
+
|
59
|
+
(long_operation_thread関数に当たる部分、関数名は何でも良い)
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
2) tweepy での検索結果は、別スレッド側で直接 Multiline へは反映させない。
|
64
|
+
|
65
|
+
(マルチスレッドで安全な操作ではない為、稀に問題がおきる可能性がある。)
|
66
|
+
|
67
|
+
write_event_value を使い、イベントとしてメインスレッドのイベントループに送ります、
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
3) 別スレッドから write_event_value で送られたイベントを受けて、
|
72
|
+
|
73
|
+
メッセージを Multiline へ反映させる。
|