回答編集履歴
2
teamiklの指摘あり修正
answer
CHANGED
@@ -1,25 +1,7 @@
|
|
1
|
+
※投稿後追記:
|
1
|
-
|
2
|
+
動くコードにはなっていますが、当方の知識不足の点が多々あると思います。上のteamiklさんの回答の方が正確なため、teamiklさんの回答&コードを参考にしてください。
|
2
3
|
|
3
|
-
修正してみました。
|
4
|
-
⓵ canvasの追加について、`frame = QWidget(self)` で定義されたframeが最終的にwidgetに配置されていません。
|
5
|
-
|
6
|
-
|
4
|
+
① 削除
|
7
|
-
```
|
8
|
-
# 説明に不要な部分は省略しています
|
9
|
-
def initUI(self):
|
10
|
-
frame = QWidget(self)
|
11
|
-
self.canvas = Canvas(frame)
|
12
|
-
|
13
|
-
self.predict_canvas = PredictCanvas(frame)
|
14
|
-
hbox = QHBoxLayout(frame)
|
15
|
-
hbox.addWidget(self.canvas)
|
16
|
-
hbox.addWidget(self.predict_canvas)
|
17
|
-
hbox.addWidget(tools)
|
18
|
-
frame.setLayout(hbox) # ここが必要
|
19
|
-
return frame
|
20
|
-
```
|
21
|
-
というように、boxレイアウトを登録したwidgetを返してあげる必要があります。
|
22
|
-
|
23
5
|
② PredictCanvasで下記のようにpaintEventを実装してあげないと、描画更新されません。
|
24
6
|
|
25
7
|
```
|
@@ -88,7 +70,7 @@
|
|
88
70
|
hbox.addWidget(self.predict_canvas)
|
89
71
|
hbox.addWidget(tools)
|
90
72
|
|
91
|
-
frame.setLayout(hbox)
|
73
|
+
# frame.setLayout(hbox) # 9行目前でQHBoxLayout(frame)というように親を指定しているため不要
|
92
74
|
|
93
75
|
return frame
|
94
76
|
|
1
追記
answer
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
|
1
|
+
※投稿後追記:上のteamiklさんの回答の方が正確なため、teamiklさんの回答&コードを参考にされた方がよいと思います。
|
2
2
|
|
3
|
-
|
3
|
+
修正してみました。
|
4
|
-
canvasの追加について、`frame = QWidget(self)` で定義されたframeが最終的にwidgetに配置されていません。
|
4
|
+
⓵ canvasの追加について、`frame = QWidget(self)` で定義されたframeが最終的にwidgetに配置されていません。
|
5
5
|
|
6
|
-
|
7
6
|
この部分は
|
8
7
|
```
|
9
8
|
# 説明に不要な部分は省略しています
|
@@ -21,8 +20,7 @@
|
|
21
20
|
```
|
22
21
|
というように、boxレイアウトを登録したwidgetを返してあげる必要があります。
|
23
22
|
|
24
|
-
## ② PredictCanvasオブジェクトにおける再描画の欠如
|
25
|
-
PredictCanvasで下記のようにpaintEventを実装してあげないと、描画更新されません。
|
23
|
+
② PredictCanvasで下記のようにpaintEventを実装してあげないと、描画更新されません。
|
26
24
|
|
27
25
|
```
|
28
26
|
def paintEvent(self, event):
|
@@ -32,8 +30,7 @@
|
|
32
30
|
|
33
31
|
```
|
34
32
|
|
35
|
-
## ③ predict_canvasのコンテキストがオブジェクト間で共有されていない
|
36
|
-
元コードでは、ToolFrame(QWidget)で新たにPredictCanvasが生成されてしまっており、メインウィジェットのpredict(predict_canvas)が共有されていません。
|
33
|
+
③ 元コードでは、ToolFrame(QWidget)で新たにPredictCanvasが生成されてしまっており、メインウィジェットのpredict(predict_canvas)が共有されていません。
|
37
34
|
|
38
35
|
下記のように、メインウィジェットのpredict_canvasをToolFrame(QWidget)が受け取れるように修正する必要があります。
|
39
36
|
|
@@ -55,12 +52,7 @@
|
|
55
52
|
self.predict = canvas # 修正 メインウィジェットのpredict_canvasを受け取る
|
56
53
|
self.initUI()
|
57
54
|
```
|
58
|
-
|
59
|
-
|
60
55
|
--------------------------
|
61
|
-
--------------------------
|
62
|
-
|
63
|
-
|
64
56
|
以上をまとめた全体コードが、下記のコードです。
|
65
57
|
```
|
66
58
|
|