PYQT5学习(13):QMidArea同时显示多个窗口,创建多个独立的窗口
QMidArea 参考文章:https://blog.csdn.net/jia666666/article/details/81670569
一种同时显示多个窗口的方法,创建多个独立的窗口,这些独立的窗口被称为SDI(single document interface 单文档界面),每个窗口都有自己的菜单系统,工具栏等,这需要占用很多资源。
MDI( multiple document interface 多文档界面)应用程序占用较少的内存资源,子窗口可以放在主窗口的容器中,这个容器空间被称为QMidArea
QMidArea 空间通常占据在QMainWindow对象的中央位置,子窗口在这个区域是QMidSubWindow类的实例,可以设置任何QWidget作为子窗口对象的内部控件,子窗口在MDI区域进行级联排列布局

import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QMdiArea,QMdiSubWindow,QLabel class MidArea(QMainWindow):
def __init__(self): super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('demo')
self.setGeometry(300,300,300,200) bar=self.menuBar()
file=bar.addMenu('File')
file.addAction('new')
file.addAction('cascade')
file.addAction('tile')
file.triggered.connect(self.showWindow) #------定义QMdiArea,用来放置子窗口------
self.area=QMdiArea()
self.setCentralWidget(self.area) def showWindow(self,data):
text=data.text()
if text=='new': #创建一个新的窗口
subwindow=QMdiSubWindow()
#为子窗口添加组件
subwindow.setWindowTitle('这是QMdiSubWindow')
subwindow.setWidget(QLabel('hello'))
#将字窗口添加到区域QmdiArea
self.area.addSubWindow(subwindow)
#子窗口显示
subwindow.show()
if text=='cascade':
#设置窗口级联显示
self.area.cascadeSubWindows() if text=='tile':
#设置窗口平铺显示
self.area.tileSubWindows() if __name__=='__main__':
app=QApplication(sys.argv) demo=MidArea()
demo.show()
sys.exit(app.exec_())
效果图:创建新的-------级联效果---------平铺效果



PYQT5学习(13):QMidArea同时显示多个窗口,创建多个独立的窗口的更多相关文章
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍
python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...
- Pyqt5学习笔记(一)
Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...
- PyQt5学习 (3)--QWidget(下)
层级关系.层级控制: 调整Z轴顺序 点击查看代码 label1 = QLabel(window) label1.setText("标签1") label1.resize(200, ...
- JavaScript学习13 JavaScript中的继承
JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...
- ThinkPhp学习13
原文:ThinkPhp学习13 简单登录验证 创建Login类 <?php class LoginAction extends Action { function index(){ $this- ...
- PYQT5学习笔记之各模块介绍
Qtwidgets模块包含创造经典桌面风格的用户界面提供了一套UI元素的类 Qtwidegts下还有以下常用对象,所以一般使用Qtwidegts时会使用面向对象式编程 QApplication: ap ...
- 【PyQt5 学习记录】006:重写窗口事件及QMessageBox
#!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QMessageBox ...
- PyQt5学习--基本窗口控件--QMainWindow
QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布局管理器中. 窗口类型介绍 QMainWindow.QWidget和 ...
- PyQt5窗口关闭问题---关闭主程序的窗口但子窗口仍显示的问题
使用PyQt5做界面开发时,如果做一个较复杂的程序时往往会涉及到在主程序中打开某个菜单弹出子窗口的问题,如果在打开很多子窗口的时候想一键退出关闭主窗口,但其它的子窗口仍然正常显示着,那么如何在代码中进 ...
随机推荐
- shader编程经典:分形--科赫曲线
序言 科赫(雪花)曲线是一个经典分形图案,来一起领略下分形之美.本篇内容用到一些基础的内容,例如UV的理解和画线技巧,有需要的话可以参考合集的画圆和画线两篇文章. 示例 shadertoy 代码: # ...
- [Kotlin Tutorials 22] 协程中的异常处理
协程中的异常处理 Parent-Child关系 如果一个coroutine抛出了异常, 它将会把这个exception向上抛给它的parent, 它的parent会做以下三件事情: 取消其他所有的ch ...
- Kubernetes(k8s)网络策略NetworkPolicy
目录 一.系统环境 二.前言 三.网络策略(NetworkPolicy)简介 四.创建pod和svc 五.没有网络策略的条件下访问pod 六.给pod添加网络策略 6.1 入站网络策略 6.1.1 入 ...
- Self-Instruct 论文解读:利用大模型自己给自己生成指令数据,指令数据自动生成
总览 大规模"指令调整"的语言模型,即指令微调的LLM,已经表现出非凡的零样本能力,尤其是推广新任务上. 然而,这些模型严重依赖于人类编写的指令数据,而这些数据通常在数量.多样性和 ...
- yolov5实战之模型剪枝
续yolov5实战之二维码检测 目录 前沿 为什么要做轻量化 什么是剪枝 稀疏化训练 剪枝 微调 结语 模型下载 前沿 在上一篇yolov5的博客中,我们用yolov5训练了一个二维码检测器,可以 ...
- LLaMA模型微调版本:斯坦福 Alpaca 详解
项目代码:https://github.com/tatsu-lab/stanford_alpaca 博客介绍:https://crfm.stanford.edu/2023/03/13/alpaca.h ...
- AI-2预备知识
2.1数据操作笔记 PyTorch和TensorFlow中的Tensor类型可做为张量使用,可支持GPU操作和自动微分. 广播机制:对不同形状的张量可使用广播机制进行运算. 为节省内存,可使用 X[: ...
- 2020 OC项目集成flutter
看了网上基本上都是相同套路,但是到我这就不行了,终于解决了, 主要就是profile文件编写, 1.在oc项目的同级目录项创建flutter模块 就是在oc项目的父级目录下,执行 flutter cr ...
- P2709 小B的询问题解
本题需要用到莫队算法 关于莫队算法 莫队算法是一种离线算法,适用于序列中统计区间特定的目标的问题. 时间复杂度通常是 \(O(n \sqrt n)\) 或更高. P2709 小B的询问 点击查看原题 ...
- Java与PHP的区别
1.PHP暂时不支持像Java那样的JIT运行时编译的热点代码,但PHP具有opcache机制,能够将脚本对应的opcode缓存在内存中. 补充:JIT与JVM的三种执行模式:解释模式.编译模式.混合 ...