from PyQt5.Qt import *
import sys, os
from UI import main
from shop import ch_location_pane
from shop import shop_info_pane
from shop import shop_query_pane
from NtBw.Nt import * # 定义了 一个全局字典变量 subDict = dict()
# 重写子窗口类,关闭时,把自已从字典中删除
class SubWindow(QMdiSubWindow):
def closeEvent(self, evt):
for key in subDict.keys():
if subDict[key] == self:
del subDict[key]
break
super().closeEvent(evt)
class MainPane(QMainWindow, main.Ui_MainWindow):
def __init__(self, parent = None, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.setupUi(self)
def openSet(self, action):
# 菜单选择
choose = action.text()
# self.mdiArea.closeActiveSubWindow()
# 如果窗口在字典中,则直接激活
if choose in subDict.keys():
self.mdiArea.setActiveSubWindow(subDict[choose])
else:
# 创建子窗口,并加入字典
self.m = eval(menuDict[choose]) # 这个理解成 self.m = QLable("标签") 即可
# sub = QMdiSubWindow()
sub = SubWindow() # 重写 QMdiSubWindow()
sub.setWidget(self.m)
subDict[choose] = sub # 把当前窗口放入字典
self.mdiArea.addSubWindow(sub)
sub.show()
if choose == "平铺显示":
self.mdiArea.tileSubWindows()
elif choose == "级联显示":
self.mdiArea.cascadeSubWindows()
# if choose == "年级设置":
# # self.m = grade_pane.GradePane()
# self.m.show()
# elif choose == "班级设置":
# self.m = class_pane.ClassPane()
# self.m.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainPane()
desktop = QApplication.desktop()
screen_rect = desktop.screenGeometry()
win.setGeometry(screen_rect)
win.show()
sys.exit(app.exec_())
PyQt5-多窗口操作[窗口打开过,下次则激活] QMdiSubWindow、setActiveSubWindow、.addSubWindow
最新推荐文章于 2024-05-12 10:39:39 发布