【Pyqt5应用实例】Pyqt5实现添加多个子窗口布局
功能结果显示
完整代码示例
import sys
from PyQt5.QtWidgets import *
'''
QMdiArea:用于容纳多文档
QMdiSubWindow
'''
class MultiWindowsDemo(QMainWindow):
# 设置一个全局变量,记录创建的窗口数
count = 0
def __init__(self):
super(MultiWindowsDemo, self).__init__()
self.setWindowTitle("容纳多文档窗口")
# 容纳多文档的对象
self.mdi = QMdiArea()
self.setCentralWidget(self.mdi)
# 创建一个工具栏按钮
bar = self.menuBar()
file = bar.addMenu("File")
# 单击“New”就会新建一个窗口
file.addAction("New")
# 单击cascade就会是窗口排列为重叠排列
file.addAction("cascade")
# 使窗口排列为平铺
file.addAction("Tiled")
# 关闭最近打开的窗口
file.addAction("close")
file.triggered.connect(self.window)
def window(self, q):
if q.text() == 'New':
MultiWindowsDemo.count = MultiWindowsDemo.count + 1
# 创建一个子窗口
sub = QMdiSubWindow()
# 向子窗口中添加控件
sub.setWidget(QRadioButton("QMdiArea"))
sub.setWindowTitle("子窗口" + str(MultiWindowsDemo.count))
self.mdi.addSubWindow(sub)
sub.show()
if q.text() == "cascade":
# 设置重叠方式
self.mdi.cascadeSubWindows()
elif q.text() == 'Tiled':
self.mdi.tileSubWindows()
elif q.text() == "close":
self.mdi.closeActiveSubWindow()
if __name__ == "__main__":
app = QApplication(sys.argv)
main = MultiWindowsDemo()
main.show()
sys.exit(app.exec_())