This commit is contained in:
2025-09-11 20:42:12 +08:00
parent 41ba70dcf2
commit b439b1d91a
2 changed files with 94 additions and 82 deletions

89
main.py
View File

@ -28,7 +28,7 @@ class StatusMonitor(QWidget):
# 窗口基础设置 # 窗口基础设置
self.setWindowTitle("中交三航精准布料浇筑要料系统") self.setWindowTitle("中交三航精准布料浇筑要料系统")
self.setGeometry(100, 100, 800, 500) # 设置窗口位置和大小 self.setGeometry(100, 100, 850, 500) # 设置窗口位置和大小
self.setStyleSheet("background-color: #121212;") # 窗口背景设为深黑色 self.setStyleSheet("background-color: #121212;") # 窗口背景设为深黑色
# 初始化主布局(垂直布局) # 初始化主布局(垂直布局)
@ -83,33 +83,33 @@ class StatusMonitor(QWidget):
statusWidget = QWidget() statusWidget = QWidget()
statusLayout = QHBoxLayout(statusWidget) statusLayout = QHBoxLayout(statusWidget)
statusLayout.setContentsMargins(0, 0, 0, 0) statusLayout.setContentsMargins(0, 0, 0, 0)
statusLayout.setSpacing(30) statusLayout.setSpacing(30) # 减小中间空白间距原30
leftGroup = QWidget() leftGroup = QWidget()
leftLayout = QVBoxLayout(leftGroup) leftLayout = QVBoxLayout(leftGroup)
leftLayout.setSpacing(15) leftLayout.setSpacing(15)
leftLayout.setContentsMargins(0, 0, 0, 0) leftLayout.setContentsMargins(30, 0, 0, 0) # 左边组左内边距设为20增加左边留白
rightGroup = QWidget() rightGroup = QWidget()
rightLayout = QVBoxLayout(rightGroup) rightLayout = QVBoxLayout(rightGroup)
rightLayout.setSpacing(15) rightLayout.setSpacing(15)
rightLayout.setContentsMargins(0, 0, 0, 0) rightLayout.setContentsMargins(0, 0, 30, 0) # 右边组右内边距设为20增加右边留白若需左边也留白可设左内边距
# 左边5个状态项及对应初始值 # 左边5个状态项及对应初始值
leftStatusInfo = [ leftStatusInfo = [
{"name": "任务单号", "value": "20250706-01"}, {"name": "任务单号", "value": "20250706-01"},
{"name": "工程名称", "value": "18号线二期工程"}, {"name": "工程名称", "value": "18号线二期工程"},
{"name": "区间段", "value": "DK12+345-DK13+678"}, {"name": "区间段", "value": "停车场工作并上行"},
{"name": "坍落度", "value": "180mm"}, {"name": "坍落度", "value": "50~70 mm"},
{"name": "配合比编号", "value": "PB-001"} {"name": "配合比编号", "value": "P2022=001"}
] ]
# 右边5个状态项及对应初始值 # 右边5个状态项及对应初始值
rightStatusInfo = [ rightStatusInfo = [
{"name": "要料状态", "value": "未要料"}, {"name": "要料状态", "value": "请求中"},
{"name": "要料标号", "value": "C50"}, {"name": "要料标号", "value": "C50P12"},
{"name": "要料方量", "value": "0"}, {"name": "要料方量", "value": "2"},
{"name": "要料时间", "value": ""}, {"name": "要料时间", "value": "2分钟后"},
{"name": "小车状态", "value": "待命"} {"name": "小车状态", "value": "移动后"}
] ]
self.statusWidgets = [] self.statusWidgets = []
@ -125,6 +125,7 @@ class StatusMonitor(QWidget):
} }
""") """)
statusItem.setFixedHeight(80) statusItem.setFixedHeight(80)
statusItem.setFixedWidth(320) # 统一加长状态项宽度(原无固定宽度)
itemLayout = QHBoxLayout(statusItem) itemLayout = QHBoxLayout(statusItem)
itemLayout.setContentsMargins(10, 5, 10, 5) itemLayout.setContentsMargins(10, 5, 10, 5)
@ -142,6 +143,8 @@ class StatusMonitor(QWidget):
# 状态名称标签 # 状态名称标签
nameLabel = QLabel(info["name"]) nameLabel = QLabel(info["name"])
nameLabel.setFixedWidth(100) # 加宽名称标签原90
nameLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;") nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;")
nameLabel.setFont(QFont("Microsoft YaHei", 12)) nameLabel.setFont(QFont("Microsoft YaHei", 12))
@ -152,14 +155,13 @@ class StatusMonitor(QWidget):
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FFFFFF; color: #FFFFFF;
background-color: #3D3D3D; background-color: #2D2D2D;
padding: 5px 10px; border: none;
border-radius: 4px; padding: 0px;
border: 1px solid #555555;
} }
""") """)
valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
valueLabel.setMinimumWidth(80) valueLabel.setMinimumWidth(150) # 加宽值标签原80
itemLayout.addWidget(indicator) itemLayout.addWidget(indicator)
itemLayout.addSpacing(10) itemLayout.addSpacing(10)
@ -189,6 +191,7 @@ class StatusMonitor(QWidget):
} }
""") """)
statusItem.setFixedHeight(80) statusItem.setFixedHeight(80)
statusItem.setFixedWidth(320) # 统一加长状态项宽度(与左侧一致)
itemLayout = QHBoxLayout(statusItem) itemLayout = QHBoxLayout(statusItem)
itemLayout.setContentsMargins(10, 5, 10, 5) itemLayout.setContentsMargins(10, 5, 10, 5)
@ -206,6 +209,8 @@ class StatusMonitor(QWidget):
# 状态名称标签 # 状态名称标签
nameLabel = QLabel(info["name"]) nameLabel = QLabel(info["name"])
nameLabel.setFixedWidth(100) # 加宽名称标签(与左侧一致)
nameLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;") nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;")
nameLabel.setFont(QFont("Microsoft YaHei", 12)) nameLabel.setFont(QFont("Microsoft YaHei", 12))
@ -216,14 +221,13 @@ class StatusMonitor(QWidget):
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FFFFFF; color: #FFFFFF;
background-color: #3D3D3D; background-color: #2D2D2D;
padding: 5px 10px; border: none;
border-radius: 4px; padding: 0px;
border: 1px solid #555555;
} }
""") """)
valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
valueLabel.setMinimumWidth(80) valueLabel.setMinimumWidth(150) # 加宽值标签(与左侧一致)
itemLayout.addWidget(indicator) itemLayout.addWidget(indicator)
itemLayout.addSpacing(10) itemLayout.addSpacing(10)
@ -242,7 +246,7 @@ class StatusMonitor(QWidget):
rightLayout.addWidget(statusItem) rightLayout.addWidget(statusItem)
statusLayout.addWidget(leftGroup) statusLayout.addWidget(leftGroup)
statusLayout.addStretch(1) statusLayout.addStretch(0) # 减小中间空白比例原1
statusLayout.addWidget(rightGroup) statusLayout.addWidget(rightGroup)
parent_layout.addWidget(statusWidget) parent_layout.addWidget(statusWidget)
@ -386,17 +390,16 @@ class StatusMonitor(QWidget):
widget['status'] = status widget['status'] = status
if status: if status:
# 状态为"是"时的样式 # 状态为"是"时的样式 - 去除边框
widget['valueLabel'].setText("") widget['valueLabel'].setText("")
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #00E676; color: #00E676;
background-color: #1E3A3A; background-color: #2D2D2D; /* 与父容器相同背景色 */
padding: 5px 10px; padding: 5px 10px;
border-radius: 4px; border: none; /* 明确去除边框 */
border: 1px solid #00796B;
min-width: 60px; min-width: 60px;
} }
""") """)
@ -408,17 +411,16 @@ class StatusMonitor(QWidget):
} }
""") """)
else: else:
# 状态为"否"时的样式 # 状态为"否"时的样式 - 去除边框
widget['valueLabel'].setText("") widget['valueLabel'].setText("")
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #FF5252; color: #FF5252;
background-color: #3D2B2B; background-color: #2D2D2D; /* 与父容器相同背景色 */
padding: 5px 10px; padding: 5px 10px;
border-radius: 4px; border: none; /* 明确去除边框 */
border: 1px solid #5C3636;
min-width: 60px; min-width: 60px;
} }
""") """)
@ -447,27 +449,28 @@ class StatusMonitor(QWidget):
"""重启按钮点击事件""" """重启按钮点击事件"""
print("系统正在重启...") print("系统正在重启...")
self.is_running = False self.is_running = False
# 重置所有状态为"否" # 重置所有状态为初始值和样式
for widget in self.statusWidgets: for i, widget in enumerate(self.statusWidgets):
widget['status'] = False widget['status'] = False
widget['valueLabel'].setText("") # 恢复初始值
widget['valueLabel'].setText(widget['initial_value'])
# 恢复初始样式(无边框)
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FF5252; color: #FFFFFF;
background-color: #3D2B2B; background-color: #2D2D2D;
padding: 5px 10px; border: none;
border-radius: 4px; padding: 0px;
border: 1px solid #5C3636; min-width: 80px;
min-width: 60px;
} }
""") """)
widget['indicator'].setStyleSheet(""" widget['indicator'].setStyleSheet("""
QLabel { QLabel {
background-color: #FF5252; background-color: #9E9E9E;
border-radius: 10px; border-radius: 10px;
border: 2px solid #C62828; border: 2px solid #555555;
} }
""") """)
# 重启后自动开始 # 重启后自动开始

87
test.py
View File

@ -28,7 +28,7 @@ class StatusMonitor(QWidget):
# 窗口基础设置 # 窗口基础设置
self.setWindowTitle("中交三航精准布料浇筑要料系统") self.setWindowTitle("中交三航精准布料浇筑要料系统")
self.setGeometry(100, 100, 800, 500) # 设置窗口位置和大小 self.setGeometry(100, 100, 850, 500) # 设置窗口位置和大小
self.setStyleSheet("background-color: #121212;") # 窗口背景设为深黑色 self.setStyleSheet("background-color: #121212;") # 窗口背景设为深黑色
# 初始化主布局(垂直布局) # 初始化主布局(垂直布局)
@ -83,33 +83,33 @@ class StatusMonitor(QWidget):
statusWidget = QWidget() statusWidget = QWidget()
statusLayout = QHBoxLayout(statusWidget) statusLayout = QHBoxLayout(statusWidget)
statusLayout.setContentsMargins(0, 0, 0, 0) statusLayout.setContentsMargins(0, 0, 0, 0)
statusLayout.setSpacing(30) statusLayout.setSpacing(30) # 减小中间空白间距原30
leftGroup = QWidget() leftGroup = QWidget()
leftLayout = QVBoxLayout(leftGroup) leftLayout = QVBoxLayout(leftGroup)
leftLayout.setSpacing(15) leftLayout.setSpacing(15)
leftLayout.setContentsMargins(0, 0, 0, 0) leftLayout.setContentsMargins(30, 0, 0, 0) # 左边组左内边距设为20增加左边留白
rightGroup = QWidget() rightGroup = QWidget()
rightLayout = QVBoxLayout(rightGroup) rightLayout = QVBoxLayout(rightGroup)
rightLayout.setSpacing(15) rightLayout.setSpacing(15)
rightLayout.setContentsMargins(0, 0, 0, 0) rightLayout.setContentsMargins(0, 0, 30, 0) # 右边组右内边距设为20增加右边留白若需左边也留白可设左内边距
# 左边5个状态项及对应初始值 # 左边5个状态项及对应初始值
leftStatusInfo = [ leftStatusInfo = [
{"name": "任务单号", "value": "20250706-01"}, {"name": "任务单号", "value": "20250706-01"},
{"name": "工程名称", "value": "18号线二期工程"}, {"name": "工程名称", "value": "18号线二期工程"},
{"name": "区间段", "value": "DK12+345-DK13+678"}, {"name": "区间段", "value": "停车场工作并上行"},
{"name": "坍落度", "value": "180mm"}, {"name": "坍落度", "value": "50~70 mm"},
{"name": "配合比编号", "value": "PB-001"} {"name": "配合比编号", "value": "P2022=001"}
] ]
# 右边5个状态项及对应初始值 # 右边5个状态项及对应初始值
rightStatusInfo = [ rightStatusInfo = [
{"name": "要料状态", "value": "未要料"}, {"name": "要料状态", "value": "请求中"},
{"name": "要料标号", "value": "C50"}, {"name": "要料标号", "value": "C50P12"},
{"name": "要料方量", "value": "0"}, {"name": "要料方量", "value": "2"},
{"name": "要料时间", "value": ""}, {"name": "要料时间", "value": "2分钟后"},
{"name": "小车状态", "value": "待命"} {"name": "小车状态", "value": "移动后"}
] ]
self.statusWidgets = [] self.statusWidgets = []
@ -125,6 +125,7 @@ class StatusMonitor(QWidget):
} }
""") """)
statusItem.setFixedHeight(80) statusItem.setFixedHeight(80)
statusItem.setFixedWidth(320) # 统一加长状态项宽度(原无固定宽度)
itemLayout = QHBoxLayout(statusItem) itemLayout = QHBoxLayout(statusItem)
itemLayout.setContentsMargins(10, 5, 10, 5) itemLayout.setContentsMargins(10, 5, 10, 5)
@ -142,21 +143,25 @@ class StatusMonitor(QWidget):
# 状态名称标签 # 状态名称标签
nameLabel = QLabel(info["name"]) nameLabel = QLabel(info["name"])
nameLabel.setFixedWidth(100) # 加宽名称标签原90
nameLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;") nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;")
nameLabel.setFont(QFont("Microsoft YaHei", 12)) nameLabel.setFont(QFont("Microsoft YaHei", 12))
# 状态值标签(去掉边框) # 状态值标签
valueLabel = QLabel(info["value"]) valueLabel = QLabel(info["value"])
valueLabel.setStyleSheet(""" valueLabel.setStyleSheet("""
QLabel { QLabel {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FFFFFF; color: #FFFFFF;
background-color: #3D3D3D; background-color: #2D2D2D;
border: none;
padding: 0px;
} }
""") """)
valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
valueLabel.setMinimumWidth(80) valueLabel.setMinimumWidth(150) # 加宽值标签原80
itemLayout.addWidget(indicator) itemLayout.addWidget(indicator)
itemLayout.addSpacing(10) itemLayout.addSpacing(10)
@ -186,6 +191,7 @@ class StatusMonitor(QWidget):
} }
""") """)
statusItem.setFixedHeight(80) statusItem.setFixedHeight(80)
statusItem.setFixedWidth(320) # 统一加长状态项宽度(与左侧一致)
itemLayout = QHBoxLayout(statusItem) itemLayout = QHBoxLayout(statusItem)
itemLayout.setContentsMargins(10, 5, 10, 5) itemLayout.setContentsMargins(10, 5, 10, 5)
@ -203,21 +209,25 @@ class StatusMonitor(QWidget):
# 状态名称标签 # 状态名称标签
nameLabel = QLabel(info["name"]) nameLabel = QLabel(info["name"])
nameLabel.setFixedWidth(100) # 加宽名称标签(与左侧一致)
nameLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;") nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;")
nameLabel.setFont(QFont("Microsoft YaHei", 12)) nameLabel.setFont(QFont("Microsoft YaHei", 12))
# 状态值标签(去掉边框) # 状态值标签
valueLabel = QLabel(info["value"]) valueLabel = QLabel(info["value"])
valueLabel.setStyleSheet(""" valueLabel.setStyleSheet("""
QLabel { QLabel {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FFFFFF; color: #FFFFFF;
background-color: #3D3D3D; background-color: #2D2D2D;
border: none;
padding: 0px;
} }
""") """)
valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
valueLabel.setMinimumWidth(80) valueLabel.setMinimumWidth(150) # 加宽值标签(与左侧一致)
itemLayout.addWidget(indicator) itemLayout.addWidget(indicator)
itemLayout.addSpacing(10) itemLayout.addSpacing(10)
@ -236,7 +246,7 @@ class StatusMonitor(QWidget):
rightLayout.addWidget(statusItem) rightLayout.addWidget(statusItem)
statusLayout.addWidget(leftGroup) statusLayout.addWidget(leftGroup)
statusLayout.addStretch(1) statusLayout.addStretch(0) # 减小中间空白比例原1
statusLayout.addWidget(rightGroup) statusLayout.addWidget(rightGroup)
parent_layout.addWidget(statusWidget) parent_layout.addWidget(statusWidget)
@ -380,17 +390,16 @@ class StatusMonitor(QWidget):
widget['status'] = status widget['status'] = status
if status: if status:
# 状态为"是"时的样式 # 状态为"是"时的样式 - 去除边框
widget['valueLabel'].setText("") widget['valueLabel'].setText("")
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #00E676; color: #00E676;
background-color: #1E3A3A; background-color: #2D2D2D; /* 与父容器相同背景色 */
padding: 5px 10px; padding: 5px 10px;
border-radius: 4px; border: none; /* 明确去除边框 */
border: 1px solid #00796B;
min-width: 60px; min-width: 60px;
} }
""") """)
@ -402,17 +411,16 @@ class StatusMonitor(QWidget):
} }
""") """)
else: else:
# 状态为"否"时的样式 # 状态为"否"时的样式 - 去除边框
widget['valueLabel'].setText("") widget['valueLabel'].setText("")
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #FF5252; color: #FF5252;
background-color: #3D2B2B; background-color: #2D2D2D; /* 与父容器相同背景色 */
padding: 5px 10px; padding: 5px 10px;
border-radius: 4px; border: none; /* 明确去除边框 */
border: 1px solid #5C3636;
min-width: 60px; min-width: 60px;
} }
""") """)
@ -441,27 +449,28 @@ class StatusMonitor(QWidget):
"""重启按钮点击事件""" """重启按钮点击事件"""
print("系统正在重启...") print("系统正在重启...")
self.is_running = False self.is_running = False
# 重置所有状态为"否" # 重置所有状态为初始值和样式
for widget in self.statusWidgets: for i, widget in enumerate(self.statusWidgets):
widget['status'] = False widget['status'] = False
widget['valueLabel'].setText("") # 恢复初始值
widget['valueLabel'].setText(widget['initial_value'])
# 恢复初始样式(无边框)
widget['valueLabel'].setStyleSheet(""" widget['valueLabel'].setStyleSheet("""
QLabel { QLabel {
font-size: 18px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #FF5252; color: #FFFFFF;
background-color: #3D2B2B; background-color: #2D2D2D;
padding: 5px 10px; border: none;
border-radius: 4px; padding: 0px;
border: 1px solid #5C3636; min-width: 80px;
min-width: 60px;
} }
""") """)
widget['indicator'].setStyleSheet(""" widget['indicator'].setStyleSheet("""
QLabel { QLabel {
background-color: #FF5252; background-color: #9E9E9E;
border-radius: 10px; border-radius: 10px;
border: 2px solid #C62828; border: 2px solid #555555;
} }
""") """)
# 重启后自动开始 # 重启后自动开始