readFileSystem/ui/inspection_card.py

91 lines
3.2 KiB
Python
Raw Permalink Normal View History

from PySide6.QtWidgets import QFrame, QLabel, QGridLayout
from PySide6.QtCore import Qt
from PySide6.QtGui import QFont
class InspectionCard(QFrame):
def __init__(self, data, parent=None):
super().__init__(parent)
self.data = data
self.init_ui()
def init_ui(self):
self.setFrameShape(QFrame.Box)
self.setLineWidth(1)
# Black border
self.setStyleSheet("""
InspectionCard {
background-color: white;
border: 1px solid black;
margin-bottom: 10px;
}
QLabel {
font-family: 'Microsoft YaHei';
font-size: 16px;
padding-left: 8px;
padding-right: 5px;
padding-top: 5px;
padding-bottom: 5px;
color: black;
qproperty-alignment: 'AlignLeft | AlignVCenter';
}
.HeaderLabel {
font-weight: bold;
qproperty-alignment: 'AlignCenter';
padding-left: 5px;
}
""")
layout = QGridLayout(self)
layout.setSpacing(0)
layout.setContentsMargins(0, 0, 0, 0)
cell_style = "border: 1px solid black; padding: 4px;"
# Function to add cell
def add_cell(text, row, col, row_span=1, col_span=1, is_header=False):
lbl = QLabel(text)
if is_header:
lbl.setAlignment(Qt.AlignCenter)
lbl.setProperty("class", "HeaderLabel")
lbl.setStyleSheet(cell_style + "font-weight: bold;")
else:
lbl.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
lbl.setStyleSheet(cell_style)
layout.addWidget(lbl, row, col, row_span, col_span)
add_cell("日期", 0, 0, 1, 1, True)
add_cell(self.data.get("date", ""), 0, 1, 1, 3)
add_cell("检验员", 0, 4, 1, 1, True)
add_cell(self.data.get("inspector", ""), 0, 5, 1, 1)
add_cell("工程号", 1, 0, 1, 1, True)
add_cell(self.data.get("batch_no", ""), 1, 1, 1, 3)
add_cell("规格", 1, 4, 1, 1, True)
add_cell(self.data.get("spec", ""), 1, 5, 1, 1)
add_cell("炉号1", 2, 0, 1, 1, True)
add_cell(self.data.get("heat_number", ""), 2, 1, 1, 2)
add_cell("材质1", 2, 3, 1, 1, True)
add_cell(self.data.get("cz", ""), 2, 4, 1, 2)
add_cell("炉号2", 3, 0, 1, 1, True)
add_cell(self.data.get("heat_number2", ""), 3, 1, 1, 2)
add_cell("材质2", 3, 3, 1, 1, True)
add_cell(self.data.get("cz2", ""), 3, 4, 1, 2)
layout.setSpacing(0)
for i in range(layout.count()):
widget = layout.itemAt(i).widget()
r, c, rs, cs = layout.getItemPosition(i)
style = "border-right: 1px solid black; border-bottom: 1px solid black; padding: 4px;"
if r == 0:
style += "border-top: 1px solid black;"
if c == 0:
style += "border-left: 1px solid black;"
if widget.property("class") == "HeaderLabel":
style += "font-weight: bold;"
widget.setStyleSheet(style)