我在主窗口的MDI区域创建了三个子窗口,想要实现如下效果:
1、启动时所有子窗口都隐藏;
2、点击左边的总装图号,则弹出总装图号的子窗口其子余窗口不显示;
3、点击左边的部件图号,之前的总装图号子窗口关闭,弹出部件图号的窗口;
卡在第二步,求指点迷津
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_())