界面修改以及显示

This commit is contained in:
2025-10-31 18:52:31 +08:00
parent bd0815d0e7
commit 290324b5e4
93 changed files with 17169 additions and 12529 deletions

View File

@ -2,7 +2,7 @@ from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QWidget, QVBoxL
from PySide6.QtGui import QPixmap
from PySide6.QtCore import Qt, QPropertyAnimation, Property
import os
import resources.resource_rc
import resources.resources_rc
# 拱形进度条
class OverlapArcProgress(QWidget):
@ -45,18 +45,18 @@ class OverlapArcProgress(QWidget):
self.fg_label.setGeometry(0, self.total_height, self.bg_pixmap.width(), 0)
# ---------- 进度显示标签 ----------
self.progress_label = QLabel(self)
self.progress_label.setGeometry(217, 17, 121, 34)
self.progress_label.setStyleSheet("""
background-color: #444750;
color: #A2EF4D;
font-size: 20px;
font-weight: bold;
""")
# 文本在标签内部居中显示
self.progress_label.setAlignment(Qt.AlignCenter)
self.progress_label.raise_() # 确保在前景上层(最上层)
self.progress_label.setText("0%") # 初始文本
# self.progress_label = QLabel(self)
# self.progress_label.setGeometry(217, 17, 121, 34)
# self.progress_label.setStyleSheet("""
# background-color: #444750;
# color: #A2EF4D;
# font-size: 20px;
# font-weight: bold;
# """)
# # 文本在标签内部居中显示
# self.progress_label.setAlignment(Qt.AlignCenter)
# self.progress_label.raise_() # 确保在前景上层(最上层)
# self.progress_label.setText("0%") # 初始文本
# ---------- 进度属性 ----------
@Property(int)
@ -73,7 +73,7 @@ class OverlapArcProgress(QWidget):
def update_foreground(self):
"""通过调整前景标签的高度和Y坐标, 实现从底部向上填充的进度条"""
# 同步更新进度标签文本
self.progress_label.setText(f"{self._progress}%")
# self.progress_label.setText(f"{self._progress}%")
# print(f"{self._progress}%")
progress_ratio = self._progress / 100.0
@ -105,90 +105,132 @@ class OverlapArcProgress(QWidget):
class ArcProgressWidget(QWidget):
def __init__(self):
super().__init__()
# 加载MainWidget背景图
# 加载ArcProgressWidget背景图
# 添加了 拱3.png 作为背景图
bg_img = ":/icons/images/拱3.png" # 需要修改为实际的图片的路径
# self.setStyleSheet(f"background-image: url({bg_img}); background-repeat: no-repeat; background-position: center;")
self.bg_pixmap = QPixmap(bg_img)
# self.setStyleSheet("background-color: red;")
# # 设置控件widget大小与背景图一致
self.setFixedSize(self.bg_pixmap.size())
# self.bg_pixmap.size() 为 555x227
# self.setFixedSize(self.bg_pixmap.size())
# self.setFixedSize(555, 254)
self.setFixedSize(555, 259)
self.setSizePolicy(
QSizePolicy.Fixed, # 水平方向固定
QSizePolicy.Fixed # 垂直方向固定
)
# 创建背景标签
background_label = QLabel(self)
# 创建垂直主布局
main_layout = QVBoxLayout(self)
main_layout.setContentsMargins(0, 0, 0, 0) # 去除边距
main_layout.setSpacing(0) # 去除控件间距
# 1. 添加标题标签(保持居中)
self.arc_title_label = QLabel("振捣模具车", self)
self.arc_title_label.setFixedSize(555, 29)
self.arc_title_label.setAlignment(Qt.AlignCenter)
self.arc_title_label.setStyleSheet("""
color: #0bffff;
font-size: 18px;
background-image: url(:/icons/images/文字标题底.png);
background-repeat: no-repeat;
background-position: center;
margin: 4px auto;
""")
main_layout.addWidget(self.arc_title_label, alignment=Qt.AlignCenter)
# 2. 创建普通QWidget作为容器大小与背景图一致
container = QWidget(self)
container.setFixedSize(self.bg_pixmap.size()) # 容器大小=背景图大小
# 容器内设置背景图
background_label = QLabel(container)
background_label.setPixmap(self.bg_pixmap)
background_label.setScaledContents(True)
background_label.setFixedSize(self.bg_pixmap.size())
background_label.setFixedSize(container.size())
background_label.lower() # 背景置底,避免遮挡其他控件
# 3. 在容器内添加所有标签和拱形进度条用setGeometry定位
# 创建拱形进度条控件
arc_bg_img = ":/icons/images/拱2.png" # 拱进度条背景(空心) # 需要修改为实际的图片的路径
arc_fg_img = ":/icons/images/拱1.png" # 拱进度条前景(实心) # 需要修改为实际的图片的路径
self.arc_progress = OverlapArcProgress(arc_bg_img, arc_fg_img, self)
# 显示重量的标签,单位是 kg
self.weight_label = QLabel(self)
self.weight_label.setGeometry(217, 118, 118, 29)
arc_bg_img = ":/icons/images/拱2.png" # 替换为实际路径
arc_fg_img = ":/icons/images/拱1.png" # 替换为实际路径
self.arc_progress = OverlapArcProgress(arc_bg_img, arc_fg_img, container)
# 显示环号的标签
self.ring_number_label = QLabel("环号: 1", container)
self.ring_number_label.setGeometry(98, 118, 116, 29) # 保持原坐标
self.ring_number_label.setStyleSheet("""
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
self.ring_number_label.setAlignment(Qt.AlignCenter)
# 显示重量的标签
self.weight_label = QLabel("2000kg", container)
self.weight_label.setGeometry(217, 118, 118, 29) # 保持原坐标
self.weight_label.setStyleSheet("""
background-color: #3a2528;
color: #A2EF4D;
font-size: 20px;
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
# 文本在标签内部居中显示
self.weight_label.setAlignment(Qt.AlignCenter)
self.weight_label.setText("2000kg") # 初始文本
# 显示管片型号的标签 如 B1
self.segment_model_label = QLabel(self)
self.segment_model_label.setGeometry(98, 150, 116, 29)
# 显示管片型号的标签
self.segment_model_label = QLabel("中埋: R12", container)
self.segment_model_label.setGeometry(98, 150, 116, 29)
self.segment_model_label.setStyleSheet("""
background-color: #3a2528;
color: #A2EF4D;
font-size: 20px;
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
# 文本在标签内部居中显示
self.segment_model_label.setAlignment(Qt.AlignCenter)
self.segment_model_label.setText("B1") # 初始文本
# 显示频率的标签,单位是 Hz
self.frequency_label = QLabel(self)
self.frequency_label.setGeometry(217, 150, 118, 29)
# 显示频率的标签
self.frequency_label = QLabel("210Hz", container)
self.frequency_label.setGeometry(217, 150, 118, 29)
self.frequency_label.setStyleSheet("""
background-color: #3a2528;
color: #A2EF4D;
font-size: 20px;
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
# 文本在标签内部居中显示
self.frequency_label.setAlignment(Qt.AlignCenter)
self.frequency_label.setText("230Hz") # 初始文本
# 显示管片编号的标签 如 SHRB1-3
self.segment_number_label = QLabel(self)
self.segment_number_label.setGeometry(338, 150, 116, 29)
# 显示管片编号的标签
self.segment_number_label = QLabel("SHRB1-3", container)
self.segment_number_label.setGeometry(338, 150, 116, 29)
self.segment_number_label.setStyleSheet("""
background-color: #3a2528;
color: #A2EF4D;
font-size: 20px;
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
# 文本在标签内部居中显示
self.segment_number_label.setAlignment(Qt.AlignCenter)
self.segment_number_label.setText("SHRB1-3") # 初始文本
# 显示状态的标签 (如:振动中等)
self.state_label = QLabel(self)
self.state_label.setGeometry(217, 182, 118, 29)
self.state_label.setStyleSheet("""
background-color: #3a2528;
color: #A2EF4D;
font-size: 20px;
# 显示管片尺寸的标签
self.segment_size_label = QLabel("6900*1500", container)
self.segment_size_label.setGeometry(98, 182, 116, 29)
self.segment_size_label.setStyleSheet("""
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
self.segment_size_label.setAlignment(Qt.AlignCenter)
# 显示状态的标签
self.state_label = QLabel("振动中", container)
self.state_label.setGeometry(217, 182, 118, 29)
self.state_label.setStyleSheet("""
background-color: #143a6e;
color: #16ffff;
font-size: 18px;
""")
# 文本在标签内部居中显示
self.state_label.setAlignment(Qt.AlignCenter)
self.state_label.setText("振动中") # 初始文本
# 4. 将拱形进度条容器添加到主布局
main_layout.addWidget(container, alignment=Qt.AlignCenter)
# 进度条测试
def testProgress(self, seconds: float):
@ -220,7 +262,7 @@ class ArcProgressWidget(QWidget):
def setState(self, stateStr:str):
self.state_label.setText(stateStr)
# 管片类型设置 (B1、B2等)
# 管片类型设置 (B1、B2、中埋: R12 等)
def setSegmentModel(self, segmentModelStr:str):
self.segment_model_label.setText(segmentModelStr)
@ -234,6 +276,6 @@ if __name__ == "__main__":
app = QApplication(sys.argv)
window = ArcProgressWidget()
window.testProgress(120)
window.setState("测试中")
# window.setState("测试中")
window.show()
sys.exit(app.exec())