本文共 1567 字,大约阅读时间需要 5 分钟。
多文档界面应用程序占用较少的内存资源,子窗口都可以放在主窗口容器中,这个容器控件被称为QMdiArea。QMdiArea控件通常占据在QMainWindow对象的中央位置,可以设置任何QWidget作为子窗口对象的内部控件。
方法 | 描述 |
---|---|
addSubWindow() | 将一个小控件添加在MDI区域作为一个新的子窗口 |
removeSubWindow() | 删除一个子窗口中的小控件 |
setActiveSubWindow() | 激活一个子窗口 |
cascadeSubWindows() | 安排子窗口在MDI区域级联显示 |
tileSubWindows() | 安排子窗口在MDI区域平铺显示 |
closeActiveSubWindow() | 关闭活动的子窗口 |
subWindowList() | 返回MDI区域的子窗口列表 |
setWidget() | 设置一个小控件作为QMdiSubWindow实例对象的内部控件 |
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow): count = 0 def __init__(self): super().__init__() self.setGeometry(100, 50, 500, 400) self.setWindowTitle('多文档界面') self.mdi = QMdiArea() self.setCentralWidget(self.mdi) bar = self.menuBar() file = bar.addMenu('File') file.addAction("New") file.addAction("cascade")#级联显示 file.addAction("Tiled")#平铺显示 file.triggered[QAction].connect(self.windowaction) def windowaction(self,q): if q.text() == 'New': Demo.count = Demo.count+1 sub = QMdiSubWindow() sub.setWidget(QTextEdit()) sub.setWindowTitle('subwindow' + str(Demo.count)) self.mdi.addSubWindow(sub) sub.show() if q.text() == 'cascade': self.mdi.cascadeSubWindows() if q.text() == 'Tiled': self.mdi.tileSubWindows()if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
运行效果如下:
转载地址:http://itozi.baihongyu.com/