在PyQt中,可以使用QMainWindow类作为主窗口,可以使用QWidget类作为子窗口。
以下是一个创建主窗口和子窗口的示例代码:
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton
class ChildWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Child Window')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Close')
button.clicked.connect(self.close)
layout.addWidget(button)
self.setLayout(layout)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.setGeometry(100, 100, 500, 400)
self.child_window = ChildWindow()
self.setCentralWidget(self.child_window)
if __name__ == '__main__':
app = QApplication([])
main_window = MainWindow()
main_window.show()
app.exec()
在上述代码中,我们创建了一个ChildWindow类作为子窗口,其继承自QWidget类。在ChildWindow的构造函数中,我们设置了子窗口的标题、大小和布局,并添加了一个按钮。在按钮的clicked信号与self.close槽函数之间建立了连接。
然后,我们创建了一个MainWindow类作为主窗口,其继承自QMainWindow类。在MainWindow的构造函数中,我们设置了主窗口的标题、大小,并创建了一个ChildWindow对象作为主窗口的中央窗口,通过self.setCentralWidget方法将其设置为中央窗口。
最后,我们创建了一个QApplication对象,实例化MainWindow对象,并通过show方法显示主窗口,最后通过app.exec方法进入主事件循环。