LISHUZUOXUN_yangjiang/LSZXPagesManagerLibrary/display_convention.py

168 lines
6.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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