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

回答編集履歴

5

最終的な結論とコード

2016/10/27 16:19

投稿

退会済みユーザー
answer CHANGED
@@ -66,4 +66,32 @@
66
66
 
67
67
  #sys.exit(app.exec_()) # ← これはいらない
68
68
 
69
+ ```
70
+
71
+ 【結論】、このやり方で、QMessageBoxを、QWidgetに配置してみたらできました。
72
+ 結局、exec_()は、終了時に1回実行されるべきものなんですね。
73
+
74
+ ```python
75
+ # coding: utf-8
76
+ # Here your code !
77
+
78
+ import sys
79
+ import PySide
80
+ from PySide import QtGui
81
+
82
+ class Widget01(QtGui.QWidget):
83
+ def __init__(self):
84
+ super().__init__()
85
+ self.msgbox01()
86
+
87
+ def msgbox01(self):
88
+ msgBox = QtGui.QMessageBox(self)
89
+ msgBox.setText("Hello World - using PySide version " + PySide.__version__)
90
+ msgBox.exec_()
91
+
92
+ if __name__ == '__main__':
93
+ app = QtGui.QApplication(sys.argv)
94
+
95
+ w01 = Widget01()
96
+
69
97
  ```

4

さらに、コード修正

2016/10/27 16:19

投稿

退会済みユーザー
answer CHANGED
@@ -41,4 +41,29 @@
41
41
  dlg.setText("Hello World - using PySide version " + PySide.__version__)
42
42
  dlg.exec_()
43
43
 
44
+ ```
45
+
46
+ さらに、exec_()メソッドが2回実行されてるのが、おかしいことに気づき、以下のコードにたどり着く。
47
+
48
+ ```python
49
+ # coding: utf-8
50
+ # Here your code !
51
+
52
+ import sys
53
+ import PySide
54
+ from PySide import QtGui
55
+
56
+ class Msgbox01(QtGui.QMessageBox):
57
+ def __init__(self):
58
+ super().__init__()
59
+ self.setText("Hello World - using PySide version " + PySide.__version__)
60
+
61
+ if __name__ == '__main__':
62
+ app = QtGui.QApplication(sys.argv)
63
+
64
+ m01 = Msgbox01()
65
+ m01.exec_()
66
+
67
+ #sys.exit(app.exec_()) # ← これはいらない
68
+
44
69
  ```

3

ソースコード一部修正

2016/10/27 16:08

投稿

退会済みユーザー
answer CHANGED
@@ -41,6 +41,4 @@
41
41
  dlg.setText("Hello World - using PySide version " + PySide.__version__)
42
42
  dlg.exec_()
43
43
 
44
- sys.exit(app.exec_())
45
-
46
44
  ```

2

最終的に、落ち着いたコードを記載

2016/10/27 15:57

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- 解決したと思って、以下のコードを書いたのですが、これだと正常に終了しないです
1
+ 解決したと思って、以下のコードを書いたのですが、これだと正常に終了しないです。
2
2
 
3
3
  ```python
4
4
  # coding: utf-8
@@ -21,4 +21,26 @@
21
21
 
22
22
  sys.exit(app.exec_())
23
23
 
24
+ ```
25
+
26
+ 結局のところ、katsukoさんのご回答のならって、以下のコードになりました。
27
+ でも、QMessageBoxって、QWidgetに配置できないんでしょか。。。
28
+
29
+ ```python
30
+ # coding: utf-8
31
+ # Here your code !
32
+
33
+ import sys
34
+ import PySide
35
+ from PySide import QtGui
36
+
37
+ if __name__ == '__main__':
38
+ app = QtGui.QApplication(sys.argv)
39
+
40
+ dlg = QtGui.QMessageBox()
41
+ dlg.setText("Hello World - using PySide version " + PySide.__version__)
42
+ dlg.exec_()
43
+
44
+ sys.exit(app.exec_())
45
+
24
46
  ```

1

自己解決したと思ったコードでは、正常終了しないことが判明した

2016/10/27 15:46

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- 以下のソースコードに落ち着きま
1
+ 解決したと思って、以下のコードを書いたのですが、これだと正常終了ないですね
2
2
 
3
3
  ```python
4
4
  # coding: utf-8