MetaCore-startup/tests/test_corner_radius.py
2025-10-17 16:56:28 +08:00

219 lines
6.8 KiB
Python
Raw 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.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试项目卡片5px圆角效果
"""
import sys
import os
from pathlib import Path
# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / 'MetaCore'))
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from data.project_manager import ProjectManager, Project
from ui.project_card import ProjectCard
from ui.styles import StyleSheet
class CornerRadiusTestWindow(QWidget):
"""测试5px圆角效果的窗口"""
def __init__(self):
super().__init__()
self.setWindowTitle("项目卡片5px圆角测试")
self.setGeometry(100, 100, 1000, 700)
self.setStyleSheet(StyleSheet.get_main_stylesheet())
# 设置深色背景
self.setStyleSheet("""
QWidget {
background-color: #1a1a1a;
color: #ffffff;
}
""" + StyleSheet.get_main_stylesheet())
self.init_ui()
def init_ui(self):
"""初始化UI"""
layout = QVBoxLayout(self)
layout.setContentsMargins(40, 40, 40, 40)
layout.setSpacing(20)
# 标题
title = QLabel("项目卡片5px圆角效果测试")
title.setStyleSheet("""
QLabel {
font-size: 24px;
font-weight: bold;
color: #ffffff;
margin-bottom: 20px;
}
""")
title.setAlignment(Qt.AlignCenter)
layout.addWidget(title)
# 说明文字
description = QLabel("""
测试说明:
• 所有项目卡片现在都使用5px的圆角
• 包括卡片外框、背景图片和列表视图图标
• 圆角效果应该统一且美观
""")
description.setStyleSheet("""
QLabel {
font-size: 14px;
color: #cccccc;
line-height: 1.5;
margin-bottom: 20px;
}
""")
layout.addWidget(description)
# 创建测试卡片网格
self.create_test_grid(layout)
def create_test_grid(self, layout):
"""创建测试卡片网格"""
# 滚动区域
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(True)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
scroll_area.setStyleSheet("""
QScrollArea {
border: none;
background: transparent;
}
""")
# 网格容器
grid_widget = QWidget()
grid_layout = QGridLayout(grid_widget)
grid_layout.setSpacing(24)
grid_layout.setContentsMargins(20, 20, 20, 20)
# 创建项目管理器
project_manager = ProjectManager()
# 创建测试项目数据
test_projects = [
{
'id': '1',
'title': '智能家居系统',
'date': '2024-10-14 15:30',
'type': 'smart',
'status': 'active',
'image': None
},
{
'id': '2',
'title': 'VR体验项目',
'date': '2024-10-13 09:15',
'type': 'vr',
'status': 'active',
'image': str(project_root / 'MetaCore' / 'Resources' / 'ProjectPreviews' / 'preview_6_1760434704537.png') if (project_root / 'MetaCore' / 'Resources' / 'ProjectPreviews' / 'preview_6_1760434704537.png').exists() else None
},
{
'id': '3',
'title': '工业控制系统',
'date': '2024-10-12 14:20',
'type': 'industrial',
'status': 'active',
'image': None
},
{
'id': '4',
'title': '游戏开发',
'date': '2024-10-11 11:45',
'type': 'game',
'status': 'active',
'image': None
}
]
# 创建网格视图卡片
row, col = 0, 0
for project_data in test_projects:
project = Project(
id=project_data['id'],
title=project_data['title'],
date=project_data['date'],
project_type=project_data['type'],
status=project_data['status'],
path=f"/test/path/{project_data['id']}",
project_dir=f"/test/path/{project_data['id']}",
image=project_data['image']
)
# 创建项目卡片
card = ProjectCard(project, project_manager, view_mode="grid")
grid_layout.addWidget(card, row, col)
col += 1
if col >= 3: # 每行3个卡片
col = 0
row += 1
# 添加列表视图示例
list_title = QLabel("列表视图示例也使用5px圆角")
list_title.setStyleSheet("""
QLabel {
font-size: 18px;
font-weight: bold;
color: #ffffff;
margin: 20px 0 10px 0;
}
""")
# 创建列表视图卡片
list_widget = QWidget()
list_layout = QVBoxLayout(list_widget)
list_layout.setSpacing(8)
list_layout.setContentsMargins(0, 0, 0, 0)
for project_data in test_projects[:2]: # 只显示前两个
project = Project(
id=project_data['id'],
title=project_data['title'],
date=project_data['date'],
project_type=project_data['type'],
status=project_data['status'],
path=f"/test/path/{project_data['id']}",
project_dir=f"/test/path/{project_data['id']}",
image=project_data['image']
)
list_card = ProjectCard(project, project_manager, view_mode="list")
list_layout.addWidget(list_card)
# 添加到主网格
grid_layout.addWidget(list_title, row + 1, 0, 1, 3)
grid_layout.addWidget(list_widget, row + 2, 0, 1, 3)
scroll_area.setWidget(grid_widget)
layout.addWidget(scroll_area)
def main():
"""主函数"""
app = QApplication(sys.argv)
# 设置应用程序属性
app.setApplicationName("圆角测试")
app.setOrganizationName("MetaCore")
# 创建并显示测试窗口
window = CornerRadiusTestWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()