MRobot/app/home_interface.py

75 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PyQt5.QtWidgets import QWidget, QVBoxLayout
from PyQt5.QtCore import Qt
from qfluentwidgets import SubtitleLabel, BodyLabel, HorizontalSeparator, ImageLabel, FluentLabelBase, TitleLabel
import sys
import os
def resource_path(relative_path):
"""获取资源文件的绝对路径,兼容打包和开发环境
对于 logo 文件,使用打包的临时目录(只有 logo 被打包)
对于其他资源,使用可执行文件所在目录
"""
if getattr(sys, 'frozen', False):
# 打包环境
if 'logo' in relative_path:
# logo 文件使用打包的临时目录
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
# 其他资源使用可执行文件所在目录
exe_dir = os.path.dirname(sys.executable)
return os.path.join(exe_dir, relative_path)
# 开发环境
return os.path.join(os.path.abspath("."), relative_path)
class HomeInterface(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setObjectName("homeInterface")
# 外层居中布局
outer_layout = QVBoxLayout(self)
outer_layout.setContentsMargins(0, 0, 0, 0)
outer_layout.setSpacing(0)
outer_layout.addStretch()
# 内容布局
content_layout = QVBoxLayout()
content_layout.setSpacing(24)
content_layout.setContentsMargins(48, 48, 48, 48)
# Logo
logo = ImageLabel(resource_path('assets/logo/MRobot.png'))
logo.scaledToHeight(80)
content_layout.addWidget(logo, alignment=Qt.AlignHCenter) # 居中对齐
content_layout.addSpacing(8)
content_layout.addStretch()
# 主标题
title = TitleLabel("MRobot Toolbox")
title.setAlignment(Qt.AlignCenter)
content_layout.addWidget(title)
# 副标题
subtitle = BodyLabel("现代化,多功能机器人开发工具箱")
subtitle.setAlignment(Qt.AlignCenter)
content_layout.addWidget(subtitle)
# 欢迎语
welcome = BodyLabel("欢迎使用 MRobot Toolbox一站式支持代码生成、硬件管理、串口调试与零件库下载。")
welcome.setAlignment(Qt.AlignCenter)
content_layout.addWidget(welcome)
content_layout.addSpacing(16)
content_layout.addStretch()
# 加到主布局
outer_layout.addLayout(content_layout)
outer_layout.addStretch()
# 版权信息置底
copyright_label = BodyLabel("© 2025 MRobot | Powered by QUT RM&RCer")
copyright_label.setAlignment(Qt.AlignCenter)
copyright_label.setStyleSheet("font-size: 13px;")
outer_layout.addWidget(copyright_label)
outer_layout.addSpacing(18)