LISHUZUOXUN_yangjiang/LSZXPagesLibrary/running_test_page.py

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)