pyqt5で計算中に別のウィンドウを表示したい
pyqt5で計算中は別のウィンドウを表示するように作ってみたいです。下は試しに書いてみたコードです。
import sys
from PyQt5 import*
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5 import QtGui,QtCore, QtWidgets
import time
from time import sleep
class Second(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Second, self).__init__(parent)
#Setting a title, locating and sizing the window
self.title = 'My Second Window'
self.left = 200
self.top = 200
self.width = 500
self.height = 500
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
lbl = QtWidgets.QLabel("計算中")
layout1=QHBoxLayout()
layout1.addWidget(lbl)
self.setLayout(layout1)
class First(QtWidgets.QWidget):
def __init__(self, parent=None):
super(First, self).__init__(parent)
self.title = 'My First Window'
self.left = 100
self.top = 100
self.width = 500
self.height = 500
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.pushButton = QtWidgets.QPushButton("Open Me", self)
self.pushButton2 = QtWidgets.QPushButton("close", self)
self.pushButton.clicked.connect(self.on_pushButton_clicked)
self.pushButton2.clicked.connect(self.on_pushButton2_clicked)
self.newWindow = Second()
#self.timer = QBasicTimer()
#self.step=0
#self.calctime=1000
layout1=QHBoxLayout()
layout1.addWidget(self.pushButton)
layout1.addWidget(self.pushButton2)
self.setLayout(layout1)
def on_pushButton_clicked(self):
self.newWindow.show()
self.calc()
self.newWindow.close()
def calc(self):
sleep(3)
def on_pushButton2_clicked(self):
self.newWindow.close()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main = First()
main.show()
sys.exit(app.exec_())
これを実行することで、次のようなGUIが作成されます。
ここで、計算に3秒かかるとして、「Open Me」のボタンを押すとcalc関数を実行している間、「計算中」と書かれた別ウィンドウが表示されるように書いたつもりです。しかし、実際に実行すると計算の3秒間、真っ白な別ウィンドが表示されただけでした。どのように直せば計算中にSecondクラスで書いたウィンドウが表示されるのでしょうか。