pyqt5当子窗口显示时关闭主窗口
时间: 2023-07-21 08:38:40 浏览: 94
关闭主窗口会导致所有的子窗口一起关闭,因此需要在子窗口的关闭事件中处理主窗口的关闭事件。可以在子窗口类的关闭事件中使用`QApplication.instance().quit()`关闭应用程序。具体实现代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton
class ChildWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Child Window')
self.resize(200, 100)
def closeEvent(self, event):
# 关闭主窗口
QApplication.instance().quit()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.resize(400, 300)
self.btn = QPushButton('Open Child Window', self)
self.btn.clicked.connect(self.open_child_window)
def open_child_window(self):
child = ChildWindow(self)
child.show()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的例子中,子窗口类`ChildWindow`重写了`closeEvent`方法,在关闭子窗口时会触发该方法,从而关闭主窗口。在主窗口类`MainWindow`中,点击按钮会打开一个子窗口。
阅读全文