通过pyqt5和eric6分别生成了一个主窗口和一个字窗口py文件,使用python通过import两个窗口,实现:在主界面点击按钮后,显示子窗口,并保持子窗口在最前面。当点击子窗口中的某个按钮后,子窗口关闭
时间: 2024-10-20 22:19:31 浏览: 19
在Python中,使用PyQt5库创建GUI应用并集成子窗口通常涉及以下几个步骤:
1. **创建主窗口**(main_window.py):
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from sub_window import SubWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.init_ui()
def init_ui(self):
# 创建一个按钮
button = QPushButton('打开子窗口', self)
button.clicked.connect(self.show_sub_window)
# 设置窗口布局
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def show_sub_window(self):
sub_window = SubWindow(parent=self) # 创建子窗口实例并指定父窗口为self
sub_window.showMaximized() # 显示最大化,保证其在最前面
sub_window.raise_() # 提升子窗口到顶层
if __name__ == '__main__':
app = QApplication([])
main_win = MainWindow()
main_win.show()
app.exec_()
```
2. **创建子窗口**(sub_window.py):
```python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
class SubWindow(QWidget):
def __init__(self, parent=None):
super(SubWindow, self).__init__(parent)
self.init_ui()
def init_ui(self):
self.setWindowTitle('子窗口')
# 子窗口内另一个按钮
close_button = QPushButton('关闭子窗口', self)
close_button.clicked.connect(self.close_sub_window)
layout = QVBoxLayout()
layout.addWidget(close_button)
self.setLayout(layout)
def close_sub_window(self):
self.close() # 当点击该按钮时,关闭子窗口
# 如果要在主窗口点击按钮后直接显示子窗口,记得在show_sub_window方法里添加创建子窗口的代码
```
当你运行`main_window.py`时,会启动主窗口。在主窗口点击"打开子窗口"按钮后,子窗口将弹出并在最前面显示。子窗口内的"关闭子窗口"按钮用于关闭子窗口。
**相关问题--:**
1. PyQT5中的事件驱动是什么?
2. 如何处理子窗口关闭后的清理工作?
3. 在这个例子中如何避免父子窗口之间的内存泄漏?
阅读全文