python 怎么解决pyqt6 点击x关闭QDialog类弹窗父窗体也关闭的问题
时间: 2023-12-10 21:42:07 浏览: 125
可以通过重写 `closeEvent` 方法来解决这个问题。具体的代码实现如下:
```python
from PyQt6.QtWidgets import QDialog, QApplication, QLabel, QVBoxLayout
from PyQt6.QtCore import Qt
class MyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
# 创建布局和标签
layout = QVBoxLayout()
label = QLabel("这是一个弹窗")
layout.addWidget(label)
self.setLayout(layout)
# 设置弹窗的属性
self.setWindowTitle("弹窗")
self.setWindowModality(Qt.WindowModality.ApplicationModal)
self.setFixedSize(200, 100)
def closeEvent(self, event):
# 阻止父窗体关闭
event.ignore()
# 关闭弹窗
self.done(0)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
dialog = MyDialog()
dialog.show()
sys.exit(app.exec())
```
这里定义了一个 `MyDialog` 类,继承自 `QDialog`。在 `MyDialog` 类中,重写了 `closeEvent` 方法,在关闭弹窗时阻止父窗体关闭,并且关闭弹窗。
在使用时,只需要创建 `MyDialog` 对象,并调用 `show` 方法即可。
阅读全文