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区域进行级联排列布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 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_()) |
效果图:创建新的-------级联效果---------平铺效果
本文作者:spiderMan1-1
本文链接:https://www.cnblogs.com/cgy1995/p/11127195.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步