feat: 知识管理平台精简版 - PyQt6桌面应用

主要功能:
- 账号管理:添加/编辑/删除账号,测试登录
- 浏览任务:批量浏览应读/选读内容并标记已读
- 截图管理:wkhtmltoimage截图,查看历史
- 金山文档:扫码登录/微信快捷登录,自动上传截图

技术栈:
- PyQt6 GUI框架
- Playwright 浏览器自动化
- SQLite 本地数据存储
- wkhtmltoimage 网页截图

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 22:16:36 +08:00
commit 83fef6dff2
24 changed files with 6133 additions and 0 deletions

136
ui/constants.py Normal file
View File

@@ -0,0 +1,136 @@
#!/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;"