pyqt5でサブウィンドウからメッセージボックスが開かない
python3.5を使っています。pyqt5を使ってサブウィンドウからメッセージボックスを開きたいです。下が書いたコードです。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
makeWindowButton = QPushButton("&make window")
makeWindowButton.clicked.connect(self.makeWindow)
self.label = QLabel()
self.label.setText("default:")
layout = QHBoxLayout()
layout.addWidget(makeWindowButton)
layout.addWidget(self.label)
self.setLayout(layout)
def makeWindow(self):
subWindow = SubWindow(self)
subWindow.show()
# サブウィンドウから実行
def setParam(self, param):
self.label.setText(param)
class SubWindow:
def __init__(self, parent=None):
self.w = QDialog(parent)
self.parent = parent
label = QLabel()
label.setText('Sub Window')
self.edit = QLineEdit()
self.edit.setText(str(1))
button = QPushButton('送信')
button.clicked.connect(self.setParamOriginal)
layout = QVBoxLayout()
layout.addWidget(label)
layout.addWidget(self.edit)
layout.addWidget(button)
self.w.setLayout(layout)
# ここで親ウィンドウに値を渡している
def setParamOriginal(self):
try:
text=float(self.edit.text())
text=str(text)
self.parent.setParam(self.edit.text())
except:
QMessageBox.about(self, "警告", "それは数字ではありません")
def show(self):
self.w.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
サブウィンドウで入力されたものが数値でなかった時にメッセージボックスが出るように書いたつもりです。しかし、メッセージボックスは表示されず、動作を中止してしまいます。