界面修改以及显示

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

@ -7,7 +7,9 @@ import sys
# 圆形按钮
from .circular_button import CircularButton
import resources.resource_rc
from .clamp_widget import ClampWidget
import resources.resources_rc
class HopperWidget(QWidget):
# 上料斗破拱信号
@ -28,7 +30,8 @@ class HopperWidget(QWidget):
# 料斗控制界面的固定大小为 332x482
# 需要根据具体的料斗的图片来调整
self.setFixedSize(356, 496)
# self.setFixedSize(356, 496)
self.setFixedSize(356, 516)
# 创建上位和下位料斗
self.upper_hopper = self.create_upper_hopper()
@ -49,7 +52,8 @@ class HopperWidget(QWidget):
# 上位的 料斗控件的固定尺寸 !!!!
# 注意: 这里需要根据具体的料斗图片来修改
group.setFixedSize(332, 202)
# group.setFixedSize(332, 202)
group.setFixedSize(332, 222) # 调整!!
# group.setStyleSheet("background-color: green")
layout = QVBoxLayout(group)
@ -58,13 +62,22 @@ class HopperWidget(QWidget):
# 标题标签(上位)
self.upper_title_label = QLabel("上位料斗")
self.upper_title_label.setFixedSize(79, 17)
self.upper_title_label.setFixedSize(117, 23)
self.upper_title_label.setAlignment(Qt.AlignCenter)
self.upper_title_label.setStyleSheet("color: #2fd3f2; font-size: 14px; font-weight: bold;")
# self.upper_title_label.setStyleSheet("color: #2fd3f2; font-size: 14px; font-weight: bold;")
# self.upper_title_label.setStyleSheet("color: #0bffff; font-size: 18px;")
self.upper_title_label.setStyleSheet("""
color: #0bffff;
font-size: 18px;
background-image: url(:/icons/images/文字标题底.png);
background-repeat: no-repeat;
background-position: center;
margin-bottom: 4px;
""")
layout.addWidget(self.upper_title_label, alignment=Qt.AlignCenter)
# 加载外框图片
outer_img = ":/icons/images/上位料斗1.png"
outer_img = ":/icons/images/料斗1.png"
outer_pixmap = QPixmap(outer_img)
if outer_pixmap.isNull():
print(f"警告:图片 {outer_img} 加载失败,请检查路径!")
@ -77,9 +90,10 @@ class HopperWidget(QWidget):
self.upper_bg_widget.setFixedSize(outer_width, outer_height)
self.upper_bg_widget.setStyleSheet(f"background-image: url({outer_img}); background-repeat: no-repeat; background-position: center;")
layout.addWidget(self.upper_bg_widget, alignment=Qt.AlignCenter)
# 内框图片(上位)
inner_img = ":/icons/images/上位料斗2.png"
inner_img = ":/icons/images/料斗2.png"
inner_pixmap = QPixmap(inner_img)
if not inner_pixmap.isNull():
self.upper_inner_label = QLabel(self.upper_bg_widget)
@ -91,10 +105,10 @@ class HopperWidget(QWidget):
status_img = ":/icons/images/料斗状态绿.png"
status_pixmap = QPixmap(status_img)
if not status_pixmap.isNull():
status_pixmap = status_pixmap.scaled(22, 22, Qt.KeepAspectRatio, Qt.SmoothTransformation)
status_pixmap = status_pixmap.scaled(13, 13, Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.upper_status_label = QLabel(self.upper_bg_widget)
self.upper_status_label.setPixmap(status_pixmap)
self.upper_status_label.move(32, 18)
self.upper_status_label.move(22, 12)
self.upper_status_label.setScaledContents(False)
self.upper_status_label.setStyleSheet("background: none;")
@ -102,29 +116,31 @@ class HopperWidget(QWidget):
arch_img = ":/icons/images/破拱.png"
arch_pixmap = QPixmap(arch_img)
if not arch_pixmap.isNull():
arch_pixmap = arch_pixmap.scaled(24, 21, Qt.KeepAspectRatio, Qt.SmoothTransformation)
arch_pixmap = arch_pixmap.scaled(16, 13, Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.upper_arch_label = QLabel(self.upper_bg_widget)
self.upper_arch_label.setPixmap(arch_pixmap)
self.upper_arch_label.move(outer_width - 56, 18)
self.upper_arch_label.move(outer_width - 39, 12)
self.upper_arch_label.setStyleSheet("background: none;")
self.upper_arch_label.setHidden(True) # 初始,不破拱状态,隐藏
# 重量文字(上位)
self.upper_weight_label = QLabel("5000kg", self.upper_bg_widget)
self.upper_weight_label.setAlignment(Qt.AlignCenter)
self.upper_weight_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px; font-weight: bold;")
self.upper_weight_label.setFixedSize(93, 22)
self.upper_weight_label.move(outer_width//2 - 46, outer_height//2 - 30)
self.upper_weight_label.setStyleSheet("background: none; background-color: #003669; color: #16ffff; font-size: 18px;")
# self.upper_weight_label.setFixedSize(93, 22)
self.upper_weight_label.setFixedSize(120, 29)
self.upper_weight_label.move(outer_width//2 - 60, outer_height//2 - 46)
# 额外文字(上位)
self.upper_extra_label = QLabel("2.0方(预估)", self.upper_bg_widget)
self.upper_extra_label.setAlignment(Qt.AlignCenter)
self.upper_extra_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px; font-weight: bold;")
self.upper_extra_label.setFixedSize(93, 22)
self.upper_extra_label.move(outer_width//2 - 46, outer_height//2)
# #262c38 #16ffff #131427 #003669
self.upper_extra_label.setStyleSheet("background: none; background-color: #003669; color: #16ffff; font-size: 18px;")
self.upper_extra_label.setFixedSize(120, 29)
self.upper_extra_label.move(outer_width//2 - 60, outer_height//2 - 13)
# 料斗夹具图片(上位)
# clamp_img = ":/icons/images/料斗夹具.png"
# clamp_img = "料斗夹具.png"
# clamp_pixmap = QPixmap(clamp_img)
# if not clamp_pixmap.isNull():
# self.upper_clamp_label = QLabel()
@ -134,29 +150,35 @@ class HopperWidget(QWidget):
# 料斗夹具图片上位固定152x60尺寸图片自适应缩放
# 注意:目前由于给出的 料斗夹具图片尺寸大了,只能够先缩放,后期图片对了,可以用上面的
clamp_img = ":/icons/images/料斗夹具.png"
clamp_pixmap = QPixmap(clamp_img)
if not clamp_pixmap.isNull():
self.upper_clamp_label = QLabel()
# 1. 固定QLabel尺寸为152x60
self.upper_clamp_label.setFixedSize(152, 60)
# 2. 图片缩放到152x60保持比例平滑缩放
scaled_pixmap = clamp_pixmap.scaled(
152, 60,
Qt.KeepAspectRatio, # 保持图片原始比例,避免变形
Qt.SmoothTransformation # 平滑缩放,提升显示效果
)
self.upper_clamp_label.setPixmap(scaled_pixmap)
# 3. 确保图片在QLabel中居中显示
self.upper_clamp_label.setAlignment(Qt.AlignCenter)
layout.addWidget(self.upper_clamp_label, alignment=Qt.AlignCenter)
# clamp_img = "料斗夹具.png"
# clamp_pixmap = QPixmap(clamp_img)
# if not clamp_pixmap.isNull():
# self.upper_clamp_label = QLabel()
# # 1. 固定QLabel尺寸为152x60 51,84
# self.upper_clamp_label.setFixedSize(152, 60)
# # 2. 图片缩放到152x60保持比例平滑缩放
# scaled_pixmap = clamp_pixmap.scaled(
# 152, 60,
# Qt.KeepAspectRatio, # 保持图片原始比例,避免变形
# Qt.SmoothTransformation # 平滑缩放,提升显示效果
# )
# self.upper_clamp_label.setPixmap(scaled_pixmap)
# # 3. 确保图片在QLabel中居中显示
# self.upper_clamp_label.setAlignment(Qt.AlignCenter)
# layout.addWidget(self.upper_clamp_label, alignment=Qt.AlignCenter)
# 按钮(上位)
# 夹具容器
self.upper_clamp_widget = ClampWidget()
layout.addWidget(self.upper_clamp_widget, alignment=Qt.AlignCenter)
self.upper_bg_widget.raise_() # 夹具图层位于 upper_bg_widget之下
# 按钮(上位料斗)
self.upper_open_btn = CircularButton("", group)
self.upper_open_btn.move(60, 153) # 上位料斗的开按钮位置
# self.upper_open_btn.move(60, 153) # 上位料斗的开按钮位置
self.upper_open_btn.move(290, 90)
self.upper_close_btn = CircularButton("", group)
self.upper_close_btn.move(233, 153) # 上位料斗的关按钮位置
# self.upper_close_btn = CircularButton("关", group)
# self.upper_close_btn.move(233, 153) # 上位料斗的关按钮位置
self.upper_arch_btn = CircularButton("", group)
self.upper_arch_btn.move(290, 37) # 上位料斗的破拱按钮位置
@ -167,6 +189,17 @@ class HopperWidget(QWidget):
self.upper_arch_btn.clicked.connect(self.onUpperArchBreaking)
self.lower_arch_btn.clicked.connect(self.onLowerArchBreaking)
self.upper_open_btn.clicked.connect(self.onUpperClampOpen)
self.lower_open_btn.clicked.connect(self.onLowerClampOpen)
@Slot()
def onUpperClampOpen(self):
self.upper_clamp_widget.testAnimation(target_angle=60, duration=6) # 测试6秒打开60度
@Slot()
def onLowerClampOpen(self):
self.lower_clamp_widget.testAnimation(target_angle=25, duration=6) # 测试6秒打开30度
@Slot()
def onUpperArchBreaking(self):
if self.upper_arch_breaking_status == False: # 不破拱状态
@ -199,7 +232,8 @@ class HopperWidget(QWidget):
# 下位的 料斗控件的固定尺寸 !!!!
# 注意: 这里需要根据具体的料斗图片来修改
group.setFixedSize(332, 280)
# group.setFixedSize(332, 280)
group.setFixedSize(332, 222)
# group.setStyleSheet("background-color: black")
layout = QVBoxLayout(group)
@ -208,13 +242,22 @@ class HopperWidget(QWidget):
# 标题标签(下位)
self.lower_title_label = QLabel("低位料斗")
self.lower_title_label.setFixedSize(79, 17)
self.lower_title_label.setFixedSize(117, 23)
self.lower_title_label.setAlignment(Qt.AlignCenter)
self.lower_title_label.setStyleSheet("color: #2fd3f2; font-size: 14px; font-weight: bold;")
# self.lower_title_label.setStyleSheet("color: #2fd3f2; font-size: 14px; font-weight: bold;")
# self.lower_title_label.setStyleSheet("color: #0bffff; font-size: 18px;")
self.lower_title_label.setStyleSheet("""
color: #0bffff;
font-size: 18px;
background-image: url(:/icons/images/文字标题底.png);
background-repeat: no-repeat;
background-position: center;
margin-bottom: 4px;
""")
layout.addWidget(self.lower_title_label, alignment=Qt.AlignCenter)
# 加载外框图片
outer_img = ":/icons/images/下位料斗1.png"
outer_img = ":/icons/images/料斗1.png"
outer_pixmap = QPixmap(outer_img)
if outer_pixmap.isNull():
print(f"警告:图片 {outer_img} 加载失败,请检查路径!")
@ -229,7 +272,7 @@ class HopperWidget(QWidget):
layout.addWidget(self.lower_bg_widget, alignment=Qt.AlignCenter)
# 内框图片(下位)
inner_img = ":/icons/images/下位料斗2.png"
inner_img = ":/icons/images/料斗2.png"
inner_pixmap = QPixmap(inner_img)
if not inner_pixmap.isNull():
self.lower_inner_label = QLabel(self.lower_bg_widget)
@ -237,14 +280,14 @@ class HopperWidget(QWidget):
self.lower_inner_label.setFixedSize(inner_pixmap.width(), inner_pixmap.height())
self.lower_inner_label.move(14, 9)
# 状态图片(下位,红色
# 状态图片(下位)
status_img = ":/icons/images/料斗状态绿.png"
status_pixmap = QPixmap(status_img)
if not status_pixmap.isNull():
status_pixmap = status_pixmap.scaled(22, 22, Qt.KeepAspectRatio, Qt.SmoothTransformation)
status_pixmap = status_pixmap.scaled(13, 13, Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.lower_status_label = QLabel(self.lower_bg_widget)
self.lower_status_label.setPixmap(status_pixmap)
self.lower_status_label.move(32, 18)
self.lower_status_label.move(22, 12)
self.lower_status_label.setScaledContents(False)
self.lower_status_label.setStyleSheet("background: none;")
@ -252,29 +295,35 @@ class HopperWidget(QWidget):
arch_img = ":/icons/images/破拱.png"
arch_pixmap = QPixmap(arch_img)
if not arch_pixmap.isNull():
arch_pixmap = arch_pixmap.scaled(24, 21, Qt.KeepAspectRatio, Qt.SmoothTransformation)
arch_pixmap = arch_pixmap.scaled(16, 13, Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.lower_arch_label = QLabel(self.lower_bg_widget)
self.lower_arch_label.setPixmap(arch_pixmap)
self.lower_arch_label.move(outer_width - 56, 18)
self.lower_arch_label.move(outer_width - 39, 12)
self.lower_arch_label.setStyleSheet("background: none;")
self.lower_arch_label.setHidden(True) # 初始,不破拱状态,隐藏
# 重量文字(下位)
self.lower_weight_label = QLabel("5000kg", self.lower_bg_widget)
self.lower_weight_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px;font-weight: bold;")
# self.lower_weight_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px;font-weight: bold;")
self.lower_weight_label.setStyleSheet("background: none; background-color: #003669; color: #16ffff; font-size: 18px;")
self.lower_weight_label.setAlignment(Qt.AlignCenter)
self.lower_weight_label.setFixedSize(93, 22)
self.lower_weight_label.move(outer_width//2 - 46, outer_height//2 - 46)
# self.lower_weight_label.setFixedSize(93, 22)
self.lower_weight_label.setFixedSize(120, 29)
# self.lower_weight_label.move(outer_width//2 - 46, outer_height//2 - 46)
self.lower_weight_label.move(outer_width//2 - 60, outer_height//2 - 46)
# 额外文字(下位)
self.lower_extra_label = QLabel("开: 25°", self.lower_bg_widget)
self.lower_extra_label.setAlignment(Qt.AlignCenter)
self.lower_extra_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px;font-weight: bold;")
self.lower_extra_label.setFixedSize(93, 22)
self.lower_extra_label.move(outer_width//2 - 46, outer_height//2 - 20)
# self.lower_extra_label.setStyleSheet("background: none; background-color: #262c38; color: #79c053; font-size: 14px;font-weight: bold;")
self.lower_extra_label.setStyleSheet("background: none; background-color: #003669; color: #16ffff; font-size: 18px;")
# self.lower_extra_label.setFixedSize(93, 22)
self.lower_extra_label.setFixedSize(120, 29)
# self.lower_extra_label.move(outer_width//2 - 46, outer_height//2 - 20)
self.lower_extra_label.move(outer_width//2 - 60, outer_height//2 - 13)
# 料斗夹具图片(下位)
# clamp_img = ":/icons/images/料斗夹具.png"
# clamp_img = "料斗夹具.png"
# clamp_pixmap = QPixmap(clamp_img)
# if not clamp_pixmap.isNull():
# self.lower_clamp_label = QLabel()
@ -283,29 +332,35 @@ class HopperWidget(QWidget):
# layout.addWidget(self.lower_clamp_label, alignment=Qt.AlignCenter)
# 目前由于给出的 料斗夹具图片尺寸大了,只能够先缩放,后期图片对了,可以用上面的
clamp_img = ":/icons/images/料斗夹具.png"
clamp_pixmap = QPixmap(clamp_img)
if not clamp_pixmap.isNull():
self.lower_clamp_label = QLabel()
# 1. 固定QLabel尺寸为152x60
self.lower_clamp_label.setFixedSize(152, 60)
# 2. 图片缩放到152x60保持比例平滑缩放
scaled_pixmap = clamp_pixmap.scaled(
152, 60,
Qt.KeepAspectRatio, # 保持图片原始比例,避免变形
Qt.SmoothTransformation # 平滑缩放,提升显示效果
)
self.lower_clamp_label.setPixmap(scaled_pixmap)
# 3. 确保图片在QLabel中居中显示
self.lower_clamp_label.setAlignment(Qt.AlignCenter)
layout.addWidget(self.lower_clamp_label, alignment=Qt.AlignCenter)
# clamp_img = "料斗夹具.png"
# clamp_pixmap = QPixmap(clamp_img)
# if not clamp_pixmap.isNull():
# self.lower_clamp_label = QLabel()
# # 1. 固定QLabel尺寸为152x60
# self.lower_clamp_label.setFixedSize(152, 60)
# # 2. 图片缩放到152x60保持比例平滑缩放
# scaled_pixmap = clamp_pixmap.scaled(
# 152, 60,
# Qt.KeepAspectRatio, # 保持图片原始比例,避免变形
# Qt.SmoothTransformation # 平滑缩放,提升显示效果
# )
# self.lower_clamp_label.setPixmap(scaled_pixmap)
# # 3. 确保图片在QLabel中居中显示
# self.lower_clamp_label.setAlignment(Qt.AlignCenter)
# layout.addWidget(self.lower_clamp_label, alignment=Qt.AlignCenter)
# 夹具容器
self.lower_clamp_widget = ClampWidget()
layout.addWidget( self.lower_clamp_widget, alignment=Qt.AlignCenter)
self.lower_bg_widget.raise_() # 夹具图层位于 self.lower_bg_widget之下
# 按钮(下位)
self.lower_open_btn = CircularButton("", group)
self.lower_open_btn.move(60, 233) # 下位料斗的开按钮位置
# self.lower_open_btn.move(60, 233) # 下位料斗的开按钮位置
self.lower_open_btn.move(290, 90)
self.lower_close_btn = CircularButton("", group)
self.lower_close_btn.move(233, 233) # 下位料斗的关按钮位置
# self.lower_close_btn = CircularButton("关", group)
# self.lower_close_btn.move(233, 233) # 下位料斗的关按钮位置
self.lower_arch_btn = CircularButton("", group)
self.lower_arch_btn.move(290, 34) # 下位料斗的破拱按钮位置
@ -395,6 +450,23 @@ class HopperWidget(QWidget):
)
self.lower_status_label.setPixmap(status_pixmap)
# 隐藏上料斗 (用于上料斗移动)
def hideUpperHopper(self):
self.upper_title_label.hide()
self.upper_bg_widget.hide()
self.upper_clamp_widget.hide()
self.upper_open_btn.hide()
self.upper_arch_btn.hide()
# 显示上料斗 (用于上料斗移动完成后恢复显示)
def showUpperHopper(self):
self.upper_title_label.setHidden(False)
self.upper_bg_widget.setHidden(False)
self.upper_clamp_widget.setHidden(False)
self.upper_open_btn.setHidden(False)
self.upper_arch_btn.setHidden(False)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = HopperWidget()