回答編集履歴

4

文章の修正

2021/01/30 12:08

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -54,16 +54,14 @@
54
54
 
55
55
 
56
56
 
57
- その上で、問題点:
57
+ その上で、解決策と問題点:
58
-
59
-
60
58
 
61
59
 
62
60
 
63
61
  - スレッド間のデータの受け渡しには signal/slot を使います。
64
62
 
63
+ - 但し、QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。
64
+
65
65
  - QThread 間でsignal/slot を処理するイベントループを動かすためには、
66
66
 
67
67
   QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
68
-
69
-  QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。

3

文章修正

2021/01/30 12:08

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- スレッドを跨いで UI に入力された値等を参照するのは、
41
+ スレッドを跨いで UI に入力された変化する値等を参照するのは、
42
42
 
43
43
  マルチスレッドにおいては安全な操作では有りません。
44
44
 
@@ -58,10 +58,6 @@
58
58
 
59
59
 
60
60
 
61
- QThread を継承した利用方法では、
62
-
63
- スレッド間のシグナル&スロットの実行に制限があります。
64
-
65
61
 
66
62
 
67
63
  - スレッド間のデータの受け渡しには signal/slot を使います。
@@ -69,3 +65,5 @@
69
65
  - QThread 間でsignal/slot を処理するイベントループを動かすためには、
70
66
 
71
67
   QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
68
+
69
+  QThread を継承した利用方法では、スレッド間のシグナル&スロットの実行に制限があります。

2

コード例追記

2021/01/30 12:05

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -4,13 +4,43 @@
4
4
 
5
5
  変数のスコープの問題だけなら、
6
6
 
7
- 別スレッドで実行される関数に引数で渡すことはできますが、
7
+ 別スレッドで実行される関数に引数で渡すことはできますが、(コード例追記)
8
+
9
+
10
+
11
+ ```python
12
+
13
+
14
+
15
+ def click_execute(self):
16
+
17
+ self.process_code_text = Process_code_text_class(self) # (1) AK003()のインスタンスを渡す
18
+
19
+ self.process_code_text.start()
20
+
21
+
22
+
23
+ #コード実行用サブクラス
24
+
25
+ class Process_code_text_class(QThread):
26
+
27
+ def __init__(self,parent=None):
28
+
29
+ super(Process_code_text_class, self).__init__(parent)
30
+
31
+
32
+
33
+ self.ak003 = parent # (2)
34
+
35
+
36
+
37
+ ```
8
38
 
9
39
 
10
40
 
11
41
  スレッドを跨いで UI に入力された値等を参照するのは、
12
42
 
13
- 安全な操作では有りません。
43
+ マルチスレッドにおいては安全な操作では有りません。
14
44
 
15
45
 
16
46
 

1

文章の修正

2021/01/30 12:02

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -39,13 +39,3 @@
39
39
  - QThread 間でsignal/slot を処理するイベントループを動かすためには、
40
40
 
41
41
   QThread を継承するのではなく、**moveToThread** を使った QThread の利用方法を調べてみてください。
42
-
43
-
44
-
45
- ----
46
-
47
-
48
-
49
- 文章よりもコードで説明したほうがわかりやすいと思うので、
50
-
51
- 後でコードで説明します。