teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

コメントの修正

2020/06/04 18:06

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -115,12 +115,15 @@
115
115
 
116
116
  追記: autoThreadInheritの finished シグナルについて
117
117
 
118
- ちなみに、ソース内の直前のコメントで書きましたが
118
+ [2020/06/05] 追記訂正:
119
- ここのthread.finished.connectで登録した関数は呼ばれません。
120
119
 
121
- ```
122
- # XXX: このループは強制終了以外に終了手段がないため
120
+ ~~# XXX: このループは強制終了以外に終了手段がないため~~
123
- # スレッド終了時のfinished シグナルは送られません
121
+ ~~# スレッド終了時のfinished シグナルは送られません~~
124
- ```
125
122
 
126
- シグナルが期待通りに動かない事の、実演のつもりで書いてました
123
+ 元々はシグナルが期待通りに動かない事の、実演のつもりで書いてましたが、
124
+
125
+ STOPボタンを押したときの terminate は後から追加したコードで、
126
+ ドキュメントがコード変更に追従してませんでした。
127
+
128
+ 現行のコードでは、terminate() 時にループは強制終了され、
129
+ finishedシグナルが発呼されます。

5

文章の修正

2020/06/04 18:06

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  概ねその理解の通りです。
52
52
 
53
- ここは推奨でない使い方の例として書いたコードなので、
53
+ autoThreadInheritの実装推奨でない使い方の例として書いたコードなので、
54
54
  一応動くからと言って、このまま参考にするのはお勧めできません。
55
55
  (上記の内、moveToThread は不要で、省いても動作に支障なし)
56
56
 

4

autoThreadInheritのfinishedシグナルについて

2020/06/04 12:50

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -110,4 +110,17 @@
110
110
  self.stop_button.clicked.disconnect(terminate)
111
111
 
112
112
  thread.finished.connect(tear_down)
113
- ```
113
+ ```
114
+
115
+
116
+ 追記: autoThreadInheritの finished シグナルについて
117
+
118
+ ちなみに、ソース内の直前のコメントで書きましたが
119
+ ここのthread.finished.connectで登録した関数は呼ばれません。
120
+
121
+ ```
122
+ # XXX: このループは強制終了以外に終了手段がないため
123
+ # スレッド終了時のfinished シグナルは送られません
124
+ ```
125
+
126
+ シグナルが期待通りに動かない事の、実演のつもりで書いてました。

3

文章の修正

2020/06/04 12:48

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -52,8 +52,10 @@
52
52
 
53
53
  ここは推奨でない使い方の例として書いたコードなので、
54
54
  一応動くからと言って、このまま参考にするのはお勧めできません。
55
- (上記の内、moveToThread は省いても動作に支障)
55
+ (上記の内、moveToThread は不要で、省いても動作に支障な)
56
56
 
57
+
58
+
57
59
  ----
58
60
 
59
61
  > line(201,202)について

2

追記2: getattr について

2020/06/04 12:36

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -22,6 +22,14 @@
22
22
  - def set_start_func(name)
23
23
  - func = getattr(self, name)
24
24
 
25
+ 追記2:
26
+
27
+ > func=getattr(self,label) は func=self.label と同じ意味であると勉強しました
28
+
29
+ 正確には self.label と同じなのは getattr(self, "label") です。
30
+ ここでの label は文字列の変数で、任意の文字列 ("autoTimer" 等) を取り、
31
+ MainWindowクラスの autoXXXX メソッドを動的に選んでます。
32
+
25
33
  ----
26
34
 
27
35
  > ②line(161~209)

1

追記: 変数名被りについて

2020/06/04 12:33

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -14,6 +14,14 @@
14
14
 
15
15
  if func: は、以前の選択した関数があった場合、disconnect でそれを解除します。
16
16
 
17
+
18
+ 追記:
19
+ def set_start_func(label) の引数は、被らないように変更した方が良かったです。
20
+ label -> name 2か所
21
+
22
+ - def set_start_func(name)
23
+ - func = getattr(self, name)
24
+
17
25
  ----
18
26
 
19
27
  > ②line(161~209)