87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
# 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)
|