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

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 用matlab求微分方程初值问题
  • ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
  • ¥15 能够跑通不报错,如何解决?(标签-matlab)
  • ¥15 MOS在RDS较大,频率高时开关波形异常
  • ¥15 SCENIC分析报错求解答
  • ¥15 ceph初始化mon不成功 下图不报错 这个是什么元
  • ¥15 数学建模数学建模少ai
  • ¥35 这个等效电路图是什么意思?(答疑)(有没有不是chat的,我就是在chat搜不到才来问的,chat还开了VIP)(可以追加酬金)
  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?