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 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加