界面修改以及显示
This commit is contained in:
@ -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())
|
||||
|
||||
Reference in New Issue
Block a user