LISHUZUOXUN_yangjiang/LSZXPagesLibrary/running_score.py

202 lines
8.2 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
# coding: gb2312
from PyQt5.QtWidgets import *
from LSZXPagesLibrary.consensus import *
from LSZXPagesLibrary.pop_message_dialog import PopDialogMessage
from LSZXPagesLibrary.running_score_layout_define import RunningScoreLayoutDefine
from LSZXPagesLibrary.tool import format_time
from PureBackend.global_execrise_backend import GEB
class RunningScore(RunningScoreLayoutDefine):
def __init__(self):
super(RunningScore, self).__init__()
self.eb = GEB().get_geb()
self.person_list = None
self.selected_person_id = ""
self.labels = []
# ע<><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>İ<EFBFBD>ť
self.back_home_button.clicked.connect(self.back_home)
# <20><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
self.stop_test_button.clicked.connect(self.stop)
self.revoke_update_button.clicked.connect(self.withdraw_fix_score)
self.commit_update_button.clicked.connect(self.fix_score)
# <20><><EFBFBD><EFBFBD>
self.message_pop_windows = PopDialogMessage(self)
# ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
self.stop_exercise_pop_windows = PopDialogMessage(self)
# <20><><EFBFBD><EFBFBD>
self.message_pop_windows.connect(self.message_pop_commit)
# ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
self.stop_exercise_pop_windows.connect(self.stop_exercise_pop_commit)
def fix_score(self):
self.eb.fix_score(self.selected_person_id)
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
self.person_list = self.eb.get_running_all_score()
self.clear_summary()
self.redraw_person_list()
def withdraw_fix_score(self):
self.eb.fix_withdraw(self.selected_person_id)
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
self.person_list = self.eb.get_running_all_score()
self.clear_summary()
self.redraw_person_list()
def back_home(self):
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳʱ<D2B3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
self.message_pop_windows.show("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?")
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ť<EFBFBD>¼<EFBFBD>
def message_pop_commit(self):
self.clear_summary()
# <20><>ת
self.jump2(HOME_PAGE)
def stop(self):
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳʱ<D2B3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
self.stop_exercise_pop_windows.show("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?")
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ť<EFBFBD>¼<EFBFBD>
def stop_exercise_pop_commit(self):
self.clear_summary()
# <20><EFBFBD><E1BDBB><EFBFBD>Գɼ<D4B3>
self.eb.update_running_score()
pkg = {
EXERCISE_TYPE: self.data[EXERCISE_TYPE],
PERSON_LIST: [
{
IS_CHOOSE: False,
NAME: score["name"],
ID: score["id"],
SCORE: int(score['running_score']),
COUNT: format_time(score['running_count']),
CLASS: score['class'],
BAND_ID: score["band_id"]
}
for score in self.eb.get_all_score()
]
}
self.jump2(RUNNING_PICK_UP, pkg)
def refresh(self) -> None:
exercise_type = self.data.get(EXERCISE_TYPE)
if exercise_type:
exercise_name = EXERCISE_TYPE_TABLE[exercise_type]
self.title_label.setText(exercise_name)
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
self.person_list = self.data.get(PERSON_LIST)
self.clear_summary()
self.redraw_person_list()
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>Ϣ
def clear_summary(self):
scroll_round_widget = self.init_scroll_round_widget()
self.scroll_round_area.setWidget(scroll_round_widget)
self.round_tips_label.setText("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
self.score_abnormal_label.setText("<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶ԣ<EFBFBD>")
# <20><><EFBFBD><EFBFBD><EFBFBD>ɵļ<C9B5>¼
self.labels = []
def redraw_person_list(self):
column_num = 6
row_num = 6
scroll_widget = QWidget()
scroll_widget.setStyleSheet("border:none;")
scroll_layout = QVBoxLayout(scroll_widget)
row_layout = QHBoxLayout()
for index, item in enumerate(self.person_list):
card_widget = self.create_person_card(item)
row_layout.addWidget(card_widget)
self.labels.append(card_widget)
index += 1
if index % column_num == 0:
scroll_layout.addLayout(row_layout)
row_layout = QHBoxLayout()
if row_layout.count() > 0:
for _ in range(column_num - row_layout.count()):
# <20>հ׿<D5B0>
empty_box = QLabel()
row_layout.addWidget(empty_box)
scroll_layout.addLayout(row_layout)
if scroll_layout.count() < row_num:
for _ in range(row_num - scroll_layout.count()):
# <20>հ׿<D5B0>
empty_box = QLabel()
empty_box.setFrameShape(QFrame.Box)
empty_box.setLineWidth(0)
# <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
row_layout = QHBoxLayout()
row_layout.addWidget(empty_box)
scroll_layout.addStretch()
scroll_layout.addLayout(row_layout)
self.scroll_area.setWidget(scroll_widget)
# ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ƭ<EFBFBD><C6AC>ʽ
def create_person_card(self, item):
# <20><><EFBFBD><EFBFBD>done<6E><65>True<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>ԣ<EFBFBD><D4A3>ɼ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
if item["done"]:
self.card_widget = self.init_card_widget_widget()
round_score_name = self.init_round_score_name_label_widget()
round_score_id = self.init_round_score_id_label_widget()
round_score_name.setText(item["name"])
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ɿ<EFBFBD><C9BF>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϳɼ<CFB3><C9BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
else:
# δ<><CEB4><EFBFBD>ɿ<EFBFBD><C9BF>Եijɼ<C4B3><C9BC><EFBFBD><EFBFBD>޸ijɹ<C4B3><C9B9><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>ű<EFBFBD><C5B1><EFBFBD>
if item["fix"]:
self.card_widget = self.init_card_widget_widget()
round_score_name = self.init_round_score_name_label_widget()
round_score_id = self.init_round_score_id_label_widget()
round_score_name.setText(item["name"] + "<EFBFBD><EFBFBD>")
# δ<><CEB4><EFBFBD>ɿ<EFBFBD><C9BF>Եijɼ<C4B3>û<EFBFBD><C3BB><EFBFBD>޸ģ<DEB8><C4A3><EFBFBD>ʾ<EFBFBD><CABE>ɫ
else:
self.card_widget = self.init_unfinished_card_widget_widget()
round_score_name = self.init_round_unfinished_score_name_label_widget()
round_score_id = self.init_round_unfinished_score_id_label_widget()
round_score_name.setText(item["name"])
round_score_time = self.init_round_score_time_label_widget()
round_score_grade = self.init_round_score_grade_label_widget()
bottom_layout = QHBoxLayout()
bottom_layout.addWidget(round_score_time)
bottom_layout.addWidget(round_score_grade)
round_score_id.setText('<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>' + item["id"])
round_score_time.setText('<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>' + format_time(item["total_time"]))
round_score_grade.setText('<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>' + str(item["score"]))
person_card_layout = QVBoxLayout(self.card_widget)
person_card_layout.addWidget(round_score_name)
person_card_layout.addWidget(round_score_id)
person_card_layout.addLayout(bottom_layout)
self.card_widget.mousePressEvent = lambda event, lbl=self.card_widget: self.on_label_clicked(event, lbl)
return self.card_widget
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD>󣬻<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>Ȧ<EFBFBD><C8A6><EFBFBD><EFBFBD>ÿȦ<C3BF><C8A6>ʱ
def on_label_clicked(self, event, label):
index = self.labels.index(label)
person_name = self.person_list[index]["name"]
# <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ԱID
self.selected_person_id = self.person_list[index]["id"]
self.round_tips_label.setText(person_name + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>" + self.selected_person_id + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
self.score_abnormal_label.setText(person_name + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>" + self.selected_person_id + "<EFBFBD><EFBFBD><EFBFBD>ijɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶ԣ<EFBFBD>")
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬Ȧ<E9A3AC><C8A6>+Ȧʱ
scroll_round_widget = self.init_scroll_round_widget()
row_round_layout = QVBoxLayout(scroll_round_widget)
row_round_num = 10
for item in self.eb.get_round_time(self.selected_person_id):
round_time_label = self.init_round_time_label_widget()
round_time_label.setText(item["name"] + ":" + item["time"])
row_round_layout.addWidget(round_time_label)
if row_round_layout.count() < row_round_num:
for _ in range(row_round_num - row_round_layout.count()):
# <20>հ׿<D5B0>
empty_box = QLabel()
empty_box.setStyleSheet("border:none")
row_round_layout.addWidget(empty_box)
self.scroll_round_area.setWidget(scroll_round_widget)