python 怎么解决pyqt6 点击x关闭QDialog类弹窗 父窗口无法操作的问题
时间: 2023-12-10 21:42:10 浏览: 114
你可以通过重写 QDialog 类的 closeEvent() 方法来实现点击关闭按钮时同时关闭弹窗和恢复父窗口的操作。具体步骤如下:
1. 在 QDialog 类中重写 closeEvent() 方法:
```python
class MyDialog(QDialog):
def closeEvent(self, event):
# 关闭弹窗
self.reject()
# 恢复父窗口操作
self.parent().setEnabled(True) # 假设父窗口为 MainWindow
```
2. 在父窗口中创建弹窗时设置其 parent 属性,并且在弹窗打开时禁用父窗口:
```python
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 600, 400)
self.setWindowTitle('My App')
self.button = QPushButton('Open Dialog', self)
self.button.move(200, 200)
self.button.clicked.connect(self.openDialog)
def openDialog(self):
self.setEnabled(False) # 禁用父窗口
dialog = MyDialog(self)
dialog.exec_()
```
这样,当你点击弹窗的关闭按钮时,弹窗会关闭并且父窗口会恢复操作。
阅读全文