主要功能: - 账号管理:添加/编辑/删除账号,测试登录 - 浏览任务:批量浏览应读/选读内容并标记已读 - 截图管理:wkhtmltoimage截图,查看历史 - 金山文档:扫码登录/微信快捷登录,自动上传截图 技术栈: - PyQt6 GUI框架 - Playwright 浏览器自动化 - SQLite 本地数据存储 - wkhtmltoimage 网页截图 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
137 lines
3.0 KiB
Python
137 lines
3.0 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
UI Design Constants - 统一UI规范
|
||
老王说:统一规范才能不出SB界面,这些数字都是精心调教过的,别tm乱改!
|
||
"""
|
||
|
||
# ==================== 页面布局 ====================
|
||
# 内容区域到边框的距离
|
||
PAGE_PADDING = 24
|
||
|
||
# 主要区块之间的间距
|
||
SECTION_SPACING = 24
|
||
|
||
# ==================== GroupBox 分组框 ====================
|
||
# GroupBox 内部边距
|
||
# 注意:QSS中已经设置了padding-top: 24px给title badge留空间
|
||
# 这里只需要设置很小的值或0,避免双重间距
|
||
GROUP_PADDING_TOP = 8 # QSS padding-top已处理主要间距,这里只做微调
|
||
GROUP_PADDING_SIDE = 20
|
||
GROUP_PADDING_BOTTOM = 20
|
||
|
||
# GroupBox 内部组件间距
|
||
GROUP_SPACING = 16
|
||
|
||
# ==================== 表单布局 ====================
|
||
# 表单行间距
|
||
FORM_ROW_SPACING = 16
|
||
|
||
# 标签最小宽度(右对齐用)
|
||
FORM_LABEL_WIDTH = 80
|
||
|
||
# 水平组件间距(同一行内)
|
||
FORM_H_SPACING = 12
|
||
|
||
# ==================== 输入控件 ====================
|
||
# 输入框标准高度
|
||
INPUT_HEIGHT = 40
|
||
|
||
# 小号输入框高度
|
||
INPUT_HEIGHT_SMALL = 36
|
||
|
||
# 输入框最小宽度
|
||
INPUT_MIN_WIDTH = 180
|
||
|
||
# 短输入框宽度(如列名A/B/C)
|
||
INPUT_WIDTH_SHORT = 70
|
||
|
||
# ==================== 按钮 ====================
|
||
# 主要按钮高度
|
||
BUTTON_HEIGHT = 40
|
||
|
||
# 普通按钮高度
|
||
BUTTON_HEIGHT_NORMAL = 36
|
||
|
||
# 小按钮高度
|
||
BUTTON_HEIGHT_SMALL = 32
|
||
|
||
# 主要按钮最小宽度
|
||
BUTTON_MIN_WIDTH = 120
|
||
|
||
# 普通按钮最小宽度
|
||
BUTTON_MIN_WIDTH_NORMAL = 100
|
||
|
||
# 小按钮宽度
|
||
BUTTON_WIDTH_SMALL = 65
|
||
|
||
# 按钮间距
|
||
BUTTON_SPACING = 12
|
||
|
||
# ==================== 列表和表格 ====================
|
||
# 表格行高
|
||
TABLE_ROW_HEIGHT = 52
|
||
|
||
# 列表项最小高度
|
||
LIST_ITEM_HEIGHT = 44
|
||
|
||
# 列表最小显示高度
|
||
LIST_MIN_HEIGHT = 160
|
||
|
||
# 图标大小
|
||
ICON_SIZE_LARGE = 80
|
||
ICON_SIZE_MEDIUM = 48
|
||
ICON_SIZE_SMALL = 24
|
||
|
||
# ==================== 标题 ====================
|
||
# 页面标题字号
|
||
TITLE_FONT_SIZE = 20
|
||
|
||
# 副标题字号
|
||
SUBTITLE_FONT_SIZE = 16
|
||
|
||
# 正文字号
|
||
TEXT_FONT_SIZE = 13
|
||
|
||
# 小字字号
|
||
TEXT_FONT_SIZE_SMALL = 12
|
||
|
||
# 标题下方间距
|
||
TITLE_MARGIN_BOTTOM = 16
|
||
|
||
# ==================== 特殊组件 ====================
|
||
# 二维码显示区域大小
|
||
QR_CODE_SIZE = 200
|
||
|
||
# 进度条高度
|
||
PROGRESS_HEIGHT = 20
|
||
|
||
# 日志区域最小高度
|
||
LOG_MIN_HEIGHT = 120
|
||
|
||
# ==================== 滚动区域 ====================
|
||
# 滚动条宽度
|
||
SCROLLBAR_WIDTH = 10
|
||
|
||
|
||
# ==================== 样式片段 ====================
|
||
def get_title_style():
|
||
"""页面标题样式"""
|
||
return f"font-size: {TITLE_FONT_SIZE}px; font-weight: bold; margin-bottom: {TITLE_MARGIN_BOTTOM}px;"
|
||
|
||
|
||
def get_subtitle_style():
|
||
"""副标题样式"""
|
||
return f"font-size: {SUBTITLE_FONT_SIZE}px; font-weight: 600;"
|
||
|
||
|
||
def get_help_text_style():
|
||
"""帮助文本样式"""
|
||
return f"color: #666; font-size: {TEXT_FONT_SIZE_SMALL}px; padding: 8px 0;"
|
||
|
||
|
||
def get_status_style(success: bool):
|
||
"""状态文本样式"""
|
||
color = "#52c41a" if success else "#ff4d4f"
|
||
return f"color: {color}; font-size: {TEXT_FONT_SIZE}px;"
|