回答編集履歴
4
文章の修正
answer
CHANGED
@@ -26,10 +26,9 @@
|
|
26
26
|
GUIのクリックイベントや描画等は、
|
27
27
|
メインスレッドのイベントループ `app.exec_()` 内で行われます。
|
28
28
|
|
29
|
-
その上で、問題点:
|
29
|
+
その上で、解決策と問題点:
|
30
30
|
|
31
|
-
|
32
31
|
- スレッド間のデータの受け渡しには signal/slot を使います。
|
32
|
+
- 但し、QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。
|
33
33
|
- QThread 間でsignal/slot を処理するイベントループを動かすためには、
|
34
|
-
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
34
|
+
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
35
|
-
QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。
|
3
文章修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
```
|
20
20
|
|
21
|
-
スレッドを跨いで UI に入力された値等を参照するのは、
|
21
|
+
スレッドを跨いで UI に入力された変化する値等を参照するのは、
|
22
22
|
マルチスレッドにおいては安全な操作では有りません。
|
23
23
|
|
24
24
|
前提として、
|
@@ -28,9 +28,8 @@
|
|
28
28
|
|
29
29
|
その上で、問題点:
|
30
30
|
|
31
|
-
QThread を継承した利用方法では、
|
32
|
-
スレッド間のシグナル&スロットの実行に制限があります。
|
33
31
|
|
34
32
|
- スレッド間のデータの受け渡しには signal/slot を使います。
|
35
33
|
- QThread 間でsignal/slot を処理するイベントループを動かすためには、
|
36
|
-
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
34
|
+
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
35
|
+
QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。
|
2
コード例追記
answer
CHANGED
@@ -1,10 +1,25 @@
|
|
1
1
|
> class AK003で定義した変数を使いたい
|
2
2
|
|
3
3
|
変数のスコープの問題だけなら、
|
4
|
-
別スレッドで実行される関数に引数で渡すことはできますが、
|
4
|
+
別スレッドで実行される関数に引数で渡すことはできますが、(コード例追記)
|
5
5
|
|
6
|
+
```python
|
7
|
+
|
8
|
+
def click_execute(self):
|
9
|
+
self.process_code_text = Process_code_text_class(self) # (1) AK003()のインスタンスを渡す
|
10
|
+
self.process_code_text.start()
|
11
|
+
|
12
|
+
#コード実行用サブクラス
|
13
|
+
class Process_code_text_class(QThread):
|
14
|
+
def __init__(self,parent=None):
|
15
|
+
super(Process_code_text_class, self).__init__(parent)
|
16
|
+
|
17
|
+
self.ak003 = parent # (2)
|
18
|
+
|
19
|
+
```
|
20
|
+
|
6
21
|
スレッドを跨いで UI に入力された値等を参照するのは、
|
7
|
-
安全な操作では有りません。
|
22
|
+
マルチスレッドにおいては安全な操作では有りません。
|
8
23
|
|
9
24
|
前提として、
|
10
25
|
GUI の生成は別スレッドではなく、全てメインスレッドで行ってください。
|
1
文章の修正
answer
CHANGED
@@ -18,9 +18,4 @@
|
|
18
18
|
|
19
19
|
- スレッド間のデータの受け渡しには signal/slot を使います。
|
20
20
|
- QThread 間でsignal/slot を処理するイベントループを動かすためには、
|
21
|
-
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
21
|
+
QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
|
22
|
-
|
23
|
-
----
|
24
|
-
|
25
|
-
文章よりもコードで説明したほうがわかりやすいと思うので、
|
26
|
-
後でコードで説明します。
|