toutie_toutu 2021-10-17 22:09 采纳率: 100%
浏览 440
已结题

python pyside2如何打开指定的MDI子窗口

我在主窗口的MDI区域创建了三个子窗口,想要实现如下效果:
1、启动时所有子窗口都隐藏;
2、点击左边的总装图号,则弹出总装图号的子窗口其子余窗口不显示;
3、点击左边的部件图号,之前的总装图号子窗口关闭,弹出部件图号的窗口;

卡在第二步,求指点迷津

img

import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 611)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
        self.treeWidget.setGeometry(QtCore.QRect(10, 10, 131, 541))
        self.treeWidget.setObjectName("treeWidget")
        item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
        item_1 = QtWidgets.QTreeWidgetItem(item_0)
        item_1 = QtWidgets.QTreeWidgetItem(item_0)
        item_1 = QtWidgets.QTreeWidgetItem(item_0)
        item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
        item_1 = QtWidgets.QTreeWidgetItem(item_0)
        item_1 = QtWidgets.QTreeWidgetItem(item_0)
        self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
        self.mdiArea.setGeometry(QtCore.QRect(150, 10, 641, 541))
        self.mdiArea.setTabsClosable(False)
        self.mdiArea.setObjectName("mdiArea")
        self.subwinAssnum = QtWidgets.QWidget()
        self.subwinAssnum.setObjectName("subwinAssnum")
        self.subwinComnum = QtWidgets.QWidget()
        self.subwinComnum.setObjectName("subwinComnum")
        self.subwinParnum = QtWidgets.QWidget()
        self.subwinParnum.setObjectName("subwinParnum")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.treeWidget.headerItem().setText(0, _translate("MainWindow", "数据管理系统"))
        __sortingEnabled = self.treeWidget.isSortingEnabled()
        self.treeWidget.setSortingEnabled(False)
        self.treeWidget.topLevelItem(0).setText(0, _translate("MainWindow", "编号系统"))
        self.treeWidget.topLevelItem(0).child(0).setText(0, _translate("MainWindow", "总装图号"))
        self.treeWidget.topLevelItem(0).child(1).setText(0, _translate("MainWindow", "部件图号"))
        self.treeWidget.topLevelItem(0).child(2).setText(0, _translate("MainWindow", "零件图号"))
        self.treeWidget.topLevelItem(1).setText(0, _translate("MainWindow", "管理"))
        self.treeWidget.topLevelItem(1).child(0).setText(0, _translate("MainWindow", "员工管理"))
        self.treeWidget.topLevelItem(1).child(1).setText(0, _translate("MainWindow", "设备管理"))
        self.treeWidget.setSortingEnabled(__sortingEnabled)
        self.subwinAssnum.setWindowTitle(_translate("MainWindow", "总装图号"))
        self.subwinComnum.setWindowTitle(_translate("MainWindow", "部件图号"))
        self.subwinParnum.setWindowTitle(_translate("MainWindow", "子窗口"))

        # 获取tree点击信号
        self.treeWidget.clicked.connect(self.getitem)
        # 关闭所有子窗口
        # self.ui.mdiArea.closeAllSubWindows()
    def getitem(self, index):
        # 如何打开子窗口?
        # self.centralwidget.setActiveSubWindow(0)
        # self.mdiArea.tileSubWindows()
        # subname = self.ui.mdiArea
        # self.ui.mdiArea.setActiveSubWindow(subname.subwinAssnum)
        # self.ui.subwinAssnum.show()
        item = self.treeWidget.currentItem()
        print(index.row())
        print('key= %s' % (item.text(0)))

        list_1 = self.mdiArea.subWindowList()
        print(list_1)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWin = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWin)
    MainWin.show()
    sys.exit(app.exec_())
  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-10-18 10:40
    关注

    用hide()方法去隐藏窗口

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢