Ich habe ein QMainWindow, die eine Schaltfläche haben, wenn Sie auf diese Schaltfläche klicken, erscheint ein anderes Widget. Dieses Widget hat eine Schaltfläche, wenn Sie auf diese Schaltfläche klicken, erscheint eine Warnmeldung. Wenn ich 'OK' auf dieser Nachrichtenschaltfläche drücke, wird nur QMessageBox geschlossen, kleines Widget ist noch offen. Ich möchte das Widget schließen, wenn ich auf dieser Nachrichtenschaltfläche "OK" drücke. Ich konnte nicht herausfinden, wie ich das machen kann. Hier ist mein Code;PyQt5 wie das letzte Widget zu zerstören, wenn geklickt 'OK' Button auf QMessageBox mit einer Schaltfläche auf dem Widget
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_())
Ich habe versucht, sie (Schaltfläche ‚OK‘ von QMessageBox und letzter widget) zu verbinden, aber ich konnte es nicht sehr gut tun und ich bin wirklich verwirrt.