pyqt5之MDI窗口设计

MDI子窗口的添加与排列

复制代码
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test_MDIArea.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QAction, QMdiSubWindow, QLabel


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)

        self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
        self.mdiArea.setGeometry(QtCore.QRect(210, 100, 361, 351))
        self.mdiArea.setObjectName("mdiArea")



        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)

        # 设置主菜单
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName('menu')
        self.menu.setTitle('子窗体操作')
        MainWindow.setMenuBar(self.menubar)
        # 设置新建菜单项
        self.actionxinjian = QtWidgets.QAction(MainWindow)
        self.actionxinjian.setObjectName('actionxinjian')
        self.actionxinjian.setText("新建")
        # 设置平铺菜单项
        self.actionpingpu = QtWidgets.QAction(MainWindow)
        self.actionpingpu.setObjectName('actionpingpu')
        self.actionpingpu.setText("平铺显示")
        # 设置级联菜单项
        self.actionjilian = QtWidgets.QAction(MainWindow)
        self.actionjilian.setObjectName("actionjilian")
        self.actionjilian.setText("级联显示")
        # 将新建的三个菜单项加到主菜单
        self.menu.addAction(self.actionxinjian)
        self.menu.addAction(self.actionpingpu)
        self.menu.addAction(self.actionjilian)
        # 将设置完成的主菜单加到菜单栏
        self.menubar.addAction(self.menu.menuAction())

        # 为菜单项关联信号
        self.menubar.triggered[QAction].connect(self.action)






        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    count = 0 # 新建子窗口的个数
    def action(self,m):
        if m.text() == "新建":
            sub = QMdiSubWindow()
            self.count = self.count + 1
            # 设置子窗口标题
            sub.setWindowTitle("子窗口" + str(self.count))
            # 在子窗口中添加一个标签并设置文本
            sub.setWidget(QLabel("这是第 %d 个子窗口"%self.count))
            self.mdiArea.addSubWindow(sub) # 将新建的子窗口添加到MDI区域
            sub.show() # 显示子窗口
        elif m.text() =="平铺显示":
            self.mdiArea.tileSubWindows() # 对子窗口进行平铺排列

        elif m.text() =="级联显示":
            self.mdiArea.cascadeSubWindows() #对子窗口级联排列


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MDI窗口"))

import sys
# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':
   app = QtWidgets.QApplication(sys.argv)
   app.setStyle("Fusion") # 设置窗口风格
   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象
   ui = Ui_MainWindow() # 创建PyQt设计的窗体对象
   ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置
   MainWindow.show() # 显示窗体
   sys.exit(app.exec_()) # 程序关闭时退出进程
复制代码

 

posted on   无名高地  阅读(21)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示