У меня есть Mainwindow и Messagebox. При нажатии Ok в окне сообщения, я хочу закрыть окно сообщения и скрыть главное окно. Публикация, что я хочу запустить главное окно на основе определенных условий. Но эта строка self.msg.exec_ () или self.msg.show (), завершая программу с помощью Process, завершила с кодом завершения 0. Я не хочу завершать Mainwindow, просто хочу скрыть его и запустить снова.
из PyQt5.QtWidgets import * из PyQt5.QtCore import Qt import sys
класс Main (QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.centralwidget = QWidget(self)
self.Close = QPushButton('Close', self)
self.Close.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
self.Close.setStyleSheet(
'QPushButton {background-color: Gray;}')
self.Close.clicked.connect(lambda: self.popup_close())
vbox = QVBoxLayout()
vbox.addWidget(self.Close)
self.centralwidget.setLayout(vbox)
self.setCentralWidget(self.centralwidget)
self.show()
def popup_close(self):
self.msg = QMessageBox()
self.msg.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.WindowTitleHint)
self.msg.setIcon(QMessageBox.Critical)
self.msg.setText("Warning.")
self.msg.setStandardButtons(QMessageBox.Ok)
if self.msg == QMessageBox.Ok:
self.msg.accept()
self.hide() #hide the main window on closing the warning popup
self.msg.show()
# self.msg.exec_()
#resp = time_api.api_calls.isSubmitted(self)
#if resp['isLocked'] == True and resp['submitted'] == True:
# Main()
class Starter():
def start(self):
app = QApplication(sys.argv)
Main()
sys.exit(app.exec_())
if __name__ == "__main__":
s = Starter()
s.start()