# coding: gb2312 from PyQt5.QtCore import QTimer from LSZXPagesLibrary.consensus import * from LSZXPagesLibrary.pop_message_dialog import PopDialogMessage from LSZXPagesLibrary.running_test_page_layout_define import RunningTestPageLayoutDefine from PureBackend.global_execrise_backend import GEB class RunningTestPage(RunningTestPageLayoutDefine): def __init__(self): super().__init__() self.eb = GEB().get_geb() self._person_list = None # 注册返回界面的按钮 self.back_home_button.clicked.connect(self.back_home) # 注册结束考试按钮动作 self.stop_button.clicked.connect(self.stop) # 定时更新界面数据 self.update_timer = QTimer(self) self.update_timer.timeout.connect(self.realtime_display) # 弹窗 self.message_pop_windows = PopDialogMessage(self) # 确定结束考试弹窗 self.stop_exercise_pop_windows = PopDialogMessage(self) # 弹窗 self.message_pop_windows.connect(self.message_pop_commit) # 确定结束考试弹窗 self.stop_exercise_pop_windows.connect(self.stop_exercise_pop_commit) def refresh(self): # 设置标题 exercise_type = self.data.get(EXERCISE_TYPE) exercise_name = EXERCISE_TYPE_TABLE[exercise_type] self.title_label.setText(exercise_name) # 初始化人员 self._person_list = self.data.get(PERSON_LIST) self.realtime_widget.set_person(self._person_list) # 激活数据自动刷新 self.realtime_display() self.update_timer.start(500) # 每秒更新一次 # 激活数据轮盘的更新 self.realtime_widget.resume() def realtime_display(self): # 获得数据 person_score = self.eb.running_score() person_score = list(filter( lambda x: x[ID] in [person_mes[ID] for person_mes in self.data.get(PERSON_LIST)], person_score )) self.realtime_widget.update_person(person_score) def back_home(self): # 结束考试 self.eb.stop_running() # 停止更新 self.update_timer.stop() # 关闭数据轮盘的更新 self.realtime_widget.pause() # 返回首页时弹窗提示 self.message_pop_windows.show("此操作将直接结束考试,并且成绩作废,是否继续?") # 弹窗点击了确定按钮事件 def message_pop_commit(self): # 跳转 self.jump2(HOME_PAGE) def stop(self): # 返回首页时弹窗提示 self.stop_exercise_pop_windows.show("此操作将结束考试,前往成绩结算,是否继续?") # 弹窗点击了确定按钮事件 def stop_exercise_pop_commit(self): # 结束考试 self.eb.stop_running() # 停止更新 self.update_timer.stop() # 关闭数据轮盘的更新 self.realtime_widget.pause() pkg = { EXERCISE_TYPE: self.data[EXERCISE_TYPE], PERSON_LIST: self.eb.get_running_all_score() } self.jump2(RUNNING_SCORE, pkg)