57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
"""
|
|||
|
|
主控制器,负责协调各个模块和数据管理
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, pyqtSlot
|
|||
|
|
from models.monitor_model import MonitorModel
|
|||
|
|
from models.dut_model import DUTModel
|
|||
|
|
from models.system_model import SystemModel
|
|||
|
|
|
|||
|
|
|
|||
|
|
class MainController(QObject):
|
|||
|
|
def __init__(self, parent=None):
|
|||
|
|
super().__init__(parent)
|
|||
|
|
|
|||
|
|
# 初始化各个数据模型
|
|||
|
|
self._monitor_model = MonitorModel()
|
|||
|
|
self._dut_model = DUTModel()
|
|||
|
|
self._system_model = SystemModel()
|
|||
|
|
|
|||
|
|
# 导航属性
|
|||
|
|
self._current_view = "test_arrangement" # 默认视图
|
|||
|
|
|
|||
|
|
# 信号定义
|
|||
|
|
currentViewChanged = pyqtSignal()
|
|||
|
|
|
|||
|
|
# 属性访问器
|
|||
|
|
@pyqtProperty('QString', notify=currentViewChanged)
|
|||
|
|
def currentView(self):
|
|||
|
|
return self._current_view
|
|||
|
|
|
|||
|
|
@currentView.setter
|
|||
|
|
def setCurrentView(self, view):
|
|||
|
|
if self._current_view != view:
|
|||
|
|
self._current_view = view
|
|||
|
|
self.currentViewChanged.emit()
|
|||
|
|
|
|||
|
|
# 模型访问器
|
|||
|
|
@pyqtProperty('QObject*', constant=True)
|
|||
|
|
def monitorModel(self):
|
|||
|
|
return self._monitor_model
|
|||
|
|
|
|||
|
|
@pyqtProperty('QObject*', constant=True)
|
|||
|
|
def dutModel(self):
|
|||
|
|
return self._dut_model
|
|||
|
|
|
|||
|
|
@pyqtProperty('QObject*', constant=True)
|
|||
|
|
def systemModel(self):
|
|||
|
|
return self._system_model
|
|||
|
|
|
|||
|
|
# 视图切换方法
|
|||
|
|
@pyqtSlot(str)
|
|||
|
|
def switchView(self, view_name):
|
|||
|
|
"""切换视图"""
|
|||
|
|
self.setCurrentView = view_name
|