Python PyQt5如何在单击时销毁最后一个小部件';OK';QMessageBox上的按钮由该小部件上的按钮创建

Python PyQt5如何在单击时销毁最后一个小部件';OK';QMessageBox上的按钮由该小部件上的按钮创建,python,python-3.4,qwidget,pyqt5,qmessagebox,Python,Python 3.4,Qwidget,Pyqt5,Qmessagebox,我有一个QMainWindow,它有一个按钮,当点击这个按钮时,另一个小部件弹出。此小部件有一个按钮,单击此按钮时会弹出警告消息。当我按下消息按钮上的“OK”时,只有QMessageBox关闭,小部件仍然打开。我想在按下消息按钮上的“OK”时关闭该小部件。我不知道该怎么做。这是我的密码 from PyQt5.QtWidgets import (QMessageBox,QApplication, QWidget, QToolTip, QPushButton,

我有一个QMainWindow,它有一个按钮,当点击这个按钮时,另一个小部件弹出。此小部件有一个按钮,单击此按钮时会弹出警告消息。当我按下消息按钮上的“OK”时,只有QMessageBox关闭,小部件仍然打开。我想在按下消息按钮上的“OK”时关闭该小部件。我不知道该怎么做。这是我的密码

from PyQt5.QtWidgets import (QMessageBox,QApplication, QWidget, QToolTip, QPushButton,
                             QDesktopWidget, QMainWindow, QAction, qApp, QToolBar, QVBoxLayout,
                             QComboBox,QLabel,QLineEdit,QGridLayout,QMenuBar,QMenu,QStatusBar,
                             QTextEdit,QDialog,QFrame,QProgressBar,QHBoxLayout
                             )
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtGui import QIcon,QFont,QPixmap,QPalette,QWindow
from PyQt5.QtCore import QCoreApplication, Qt,QBasicTimer, QTimer,QPoint
import PyQt5.QtWidgets,PyQt5.QtCore
import time,random,subprocess,sys,json


class cssden(QMainWindow):
    def __init__(self):
        super().__init__()


        self.mwidget = QMainWindow(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setFixedSize(600,500)

        #Other widget button
        self.owidget = QPushButton(self)
        self.owidget.clicked.connect(self.second_widget)

        self.show()

    #other widget
    #I want to destroy this widget when I press 'OK' on the QMessageBox
    def second_widget(self):
        self.w_window = QWidget()
        self.w_window.setGeometry(650,300,600,300)
        self.w_window.setStyleSheet("background-color: lightblue")

        self.w_button = QPushButton(self.w_window)
        self.w_button.setText("Alert")
        self.w_button.clicked.connect(self.alert)


        self.w_window.show()
    #alert from second widget
    def alert(self):
        QMessageBox.about(self.w_window,"Alert","Alert message")

app = QApplication(sys.argv)
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 1px solid black}")

ex = cssden()
sys.exit(app.exec_())

我试图将它们连接起来(“QMessageBox的OK”按钮和最后一个小部件),但我做得不太好,我真的很困惑。

我自己想出了解决方案,只需制作一个QMessageBox(无继承),然后找到结果并检查结果是否是您想要的,
close()
小部件

self.result1 = QMessageBox(QMessageBox.Information,"Alert","Alert message",QMessageBox.Ok)
self.result1.setGeometry(500,500,500,500)
self.result1.show()

result = self.result1.exec_()
if result == 1024:
    self.w_window.close()
我使用了“确定”按钮,因此当我打印
result
时,值为
1024
,因此在检查单击哪个按钮之前(如果使用是|否按钮),请先打印结果,然后找到值,然后执行您的工作