168 lines
6.3 KiB
Python
168 lines
6.3 KiB
Python
# coding: gb2312
|
||
from PyQt5.QtGui import QColor
|
||
from PyQt5.QtWidgets import *
|
||
from LSZXPagesManagerLibrary.consensus import *
|
||
from PyQt5.QtCore import Qt
|
||
|
||
|
||
class ConventionBox(QWidget):
|
||
def __init__(self):
|
||
super().__init__()
|
||
self.data_list = []
|
||
self.header_type_table = HEADER_TYPE_TABLE
|
||
self.column_names = ['编号', '姓名', '心率', '血氧', '个数']
|
||
|
||
self.item_widget = self._init_item_widget()
|
||
self.item_title = self._init_item_title()
|
||
|
||
self.table_widget = self.init_table_widget()
|
||
self.empty_label = self.init_empty_label()
|
||
self.table_stacked_widget = self.init_table_stacked_widget()
|
||
|
||
self.main_layout = QVBoxLayout()
|
||
self.main_layout.setContentsMargins(10, 0, 10, 0)
|
||
self.main_layout.addWidget(self.item_title, 6)
|
||
self.main_layout.addWidget(self.table_stacked_widget, 94)
|
||
self.item_widget.setLayout(self.main_layout)
|
||
|
||
self.layout = QHBoxLayout()
|
||
self.layout.setContentsMargins(0, 0, 0, 0)
|
||
self.layout.addWidget(self.item_widget)
|
||
self.setLayout(self.layout)
|
||
|
||
def set_data(self, title, data):
|
||
self.item_title.setText(title)
|
||
self.data_list = data
|
||
if len(self.data_list) > 0:
|
||
self.table_stacked_widget.addWidget(self.table_widget)
|
||
self.draw_table()
|
||
else:
|
||
self.table_stacked_widget.addWidget(self.empty_label)
|
||
|
||
def draw_table(self):
|
||
self.table_widget.setColumnCount(len(self.column_names))
|
||
self.table_widget.setHorizontalHeaderLabels(self.column_names)
|
||
self.table_widget.setRowCount(len(self.data_list))
|
||
for row_index, row_data in enumerate(self.data_list):
|
||
row_color = QColor("white") # 初始化行颜色为黑色
|
||
if int(row_data['hr']) < 90:
|
||
row_color = QColor("red") # 如果心率低于 90,设置整行颜色为红色
|
||
for col_index, col_name in enumerate(self.column_names):
|
||
item = QTableWidgetItem()
|
||
if col_name == self.header_type_table[NAME]:
|
||
value = row_data['name']
|
||
elif col_name == self.header_type_table[ID]:
|
||
value = str(row_data['id'])
|
||
elif col_name == self.header_type_table[HR]:
|
||
value = str(row_data['hr'])
|
||
elif col_name == self.header_type_table[BO]:
|
||
value = str(row_data['bo'])
|
||
elif col_name == self.header_type_table[COUNT]:
|
||
value = str(row_data['count'])
|
||
else:
|
||
value = ""
|
||
item.setText(value)
|
||
item.setTextAlignment(Qt.AlignCenter) # 设置文字居中
|
||
item.setForeground(row_color) # 设置单元格文字颜色
|
||
self.table_widget.setItem(row_index, col_index, item)
|
||
|
||
# 设置表头样式
|
||
header = self.table_widget.horizontalHeader()
|
||
header.setStyleSheet("""
|
||
QHeaderView::section {
|
||
background-color: none;
|
||
font: 600 15px \"Microsoft YaHei UI\";
|
||
background: transparent;
|
||
border: 1px solid #0e5af4;
|
||
color: #08a4ff;
|
||
border-image: none;
|
||
padding-top: 3px;
|
||
padding-bottom: 3px;
|
||
margin-top: 6px;
|
||
border-left: none;
|
||
border-right: none;
|
||
}
|
||
""")
|
||
|
||
# 不显示行号
|
||
self.table_widget.verticalHeader().setVisible(False)
|
||
# 使表格宽度撑满屏幕
|
||
self.table_widget.horizontalHeader().setStretchLastSection(True)
|
||
self.table_widget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||
|
||
self.table_widget.horizontalHeader().setSectionResizeMode(len(self.column_names) - 1, QHeaderView.Fixed)
|
||
self.table_widget.setColumnWidth(len(self.column_names) - 1, 50)
|
||
# 使表格行高和列宽自适应
|
||
self.table_widget.verticalHeader().setDefaultSectionSize(20)
|
||
# 双击时不能对表格内容进行修改
|
||
self.table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
||
if len(self.data_list) > 0:
|
||
self.table_widget.item(0, len(self.column_names) - 1).setBackground(QColor("#409eff"))
|
||
for row in range(self.table_widget.rowCount()):
|
||
self.table_widget.item(row, len(self.column_names) - 1).setBackground(QColor("#409eff"))
|
||
|
||
@staticmethod
|
||
def init_table_widget():
|
||
table_widget = QTableWidget()
|
||
table_widget.setStyleSheet(
|
||
"background: transparent;"
|
||
"border: none;"
|
||
"border-image: none;"
|
||
"background-image: none;"
|
||
"color: #ffffff;"
|
||
"font: 15px \"Microsoft YaHei UI\";"
|
||
)
|
||
return table_widget
|
||
|
||
@staticmethod
|
||
def _init_item_title():
|
||
item_title = QLabel("")
|
||
item_title.setAlignment(Qt.AlignCenter)
|
||
item_title.setStyleSheet(
|
||
"font: 600 24px \"Microsoft YaHei UI\";"
|
||
"color: #fdbb03;"
|
||
"background: transparent;"
|
||
"border: none;"
|
||
"border-image: none;"
|
||
)
|
||
return item_title
|
||
|
||
@staticmethod
|
||
def _init_item_widget():
|
||
item_widget = QWidget()
|
||
item_widget.setStyleSheet(
|
||
"border-image: url(assets/bg_item.png);"
|
||
"background-size: contain;"
|
||
"background-repeat: no-repeat;"
|
||
"background-position: center;"
|
||
"background: none;"
|
||
"border: none;"
|
||
"background-color: none;"
|
||
)
|
||
return item_widget
|
||
|
||
@staticmethod
|
||
def init_empty_label():
|
||
empty_label = QLabel('暂无数据')
|
||
empty_label.setAlignment(Qt.AlignCenter)
|
||
empty_label.setStyleSheet(
|
||
"color: #ffffff;"
|
||
"font: 20px \"Microsoft YaHei UI\";"
|
||
"margin-bottom: 20px;"
|
||
"background: transparent;"
|
||
"border: none;"
|
||
"border-image: none;"
|
||
)
|
||
return empty_label
|
||
|
||
@staticmethod
|
||
def init_table_stacked_widget():
|
||
table_stacked_widget = QStackedWidget()
|
||
table_stacked_widget.setStyleSheet(
|
||
"background: transparent;"
|
||
"border: none;"
|
||
"border-image: none;"
|
||
)
|
||
return table_stacked_widget
|
||
|