PyQt布局基础:主窗体上添加多个子窗口

本文详细介绍了如何在PyQt5中创建一个MDI应用程序,通过QMdiArea作为中心控件管理和显示QMdiSubWindow创建的多个子窗口,包括有标题和无边框的窗口示例。
摘要由CSDN通过智能技术生成

主窗体上添加多个子窗口

实现多文档界面(MDI)

效果

在这里插入图片描述

要点

QMdiArea
QMdiArea就像是多文档窗口的窗口管理器。例如,它将它所管理的窗口绘制在它上面,并且以级联或者平铺的方式放置这些窗口。通常情况下,QMdiArea用作QMainWindow的中心控件,以此来创建一个MDI应用程序。

QMdiSubWindow
QMdiArea中的子窗口是QMdiSubWindow的实例化对象。

代码

import sys  
from PyQt5.QtWidgets import *
from PyQt5.QtCore import * 
  
class MainWindow(QMainWindow):  
    def __init__(self):  
        super().__init__()  
  
        # 创建主窗口部件  
        self.setWindowTitle('Example')  
        self.setGeometry(100, 100, 400, 400)  
  
        self.mdi_area = QMdiArea()  
        self.setCentralWidget(self.mdi_area)   
  
        # 创建第一个子窗口,并设置其内容  
        self.subwindow1 = QMdiSubWindow()
        self.subwindow1.setWindowTitle('SubWindow 1')  
        widget1 = QWidget() 
        layout1 = QVBoxLayout()  
        label1 = QLabel('w1')  
        layout1.addWidget(label1)  
        widget1.setLayout(layout1)  
        self.subwindow1.setWidget(widget1)  
        self.mdi_area.addSubWindow(self.subwindow1)  

        subwindow1_width = 200 
        subwindow1_height = 400 
        self.subwindow1.resize(subwindow1_width, subwindow1_height)  
  
        # 创建第二个子窗口,并设置其内容  
        self.subwindow2 = QMdiSubWindow() 
        self.subwindow2.setWindowFlags(Qt.FramelessWindowHint)  
        # self.subwindow2.setWindowTitle('SubWindow 2')  
        widget2 = QWidget()  
        layout2 = QVBoxLayout()  
        label2 = QLabel('w2,这是一个无边框子窗口')  
        layout2.addWidget(label2)  
        widget2.setLayout(layout2)  
        self.subwindow2.setWidget(widget2)  
        self.mdi_area.addSubWindow(self.subwindow2)  
        subwindow2_width = 200
        subwindow2_height = 400 
        self.subwindow2.resize(subwindow2_width, subwindow2_height)  
 
  
if __name__ == '__main__':  
    app = QApplication(sys.argv)  
    window = MainWindow()  
    window.show()  
    sys.exit(app.exec_())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值