一款为 HAM 打造的开源业余无线电台日志管理系统
HamLog 是一款面向业余无线电爱好者(HAM)开发的电子日志管理软件,使用 Python + PyQt6 + SQLite3 构建,遵循 GPL-3.0 开源协议。
无论你是刚入门的爱好者还是资深火腿,HamLog 都能帮助你高效管理 QSO 日志、追踪 QSL 卡片收发状态,并支持 ADIF 导出与 LoTW 上传。
| 功能 | 状态 | 说明 |
|---|---|---|
| 📝 QSO 日志录入 | ✅ | 支持呼号、频率、模式、功率、RST 报告等完整字段;呼号自动转大写 |
| 🔍 智能搜索 | ✅ | 支持按呼号、QTH、设备、备注模糊搜索 |
| 📊 实时统计 | ✅ | 总通联数、今日通联数实时显示 |
| 🎴 QSL 卡片管理 | ✅ | 记录收发日期,追踪卡片状态 |
| ⚙️ 本台信息配置 | ✅ | 呼号、姓名、QTH、网格定位等个性化设置 |
| 🌓 深色/浅色主题 | ✅ | 一键切换,适配不同使用环境 |
| 📤 ADIF 导出 | ✅ | 支持按日期范围、波段、模式筛选导出,适配 LoTW 字段要求 |
| 🌐 LoTW 上传 | ✅ | 调用 TQSL 签名生成的秘钥文件,通过 HTTP POST 上传至 ARRL LoTW 服务器 |
| 🔎 QRZ.com 查询 | ✅ | 爬虫获取呼号信息,支持国家识别、头像显示、LoTW/eQSL 状态检测 |
| 🖥️ 界面自定义 | ✅ | 全局字体、字号、表格行高自定义;搜索框选择字体 |
| 🌐 代理支持 | ✅ | HTTP/HTTPS/SOCKS5 代理,支持读取 Windows 系统代理设置 |
| 📡 网络延迟监测 | ✅ | 实时 Ping 检测多个节点延迟,状态栏动态显示 |
| 🔄 自动更新 | ✅ | 从 Gitee 获取版本信息,通过 GitHub Release + ghproxy 下载安装包 |
| 📋 运行日志 | ✅ | 内置日志查看器,支持分级过滤、搜索、导出;SQLite 缓存 + 文件持久化 |
深色主题下的主界面,包含呼号信息栏、实时时钟、网络延迟监测、搜索工具和日志表格
- 操作系统:Windows 10 / 11 (x64)(主要支持平台)
- Python:3.8 或更高版本
# 核心依赖
pip install PyQt6
# 可选依赖(用于高级功能)
pip install PySocks # SOCKS5 代理支持# 克隆仓库
git clone https://github.com/ARPRC-BA8AQA/HamLog.git
cd HamLog
# 运行程序
python "HAMLOG GUI.py"pip install pyinstaller
pyinstaller --onefile --windowed "HAMLOG GUI.py"HamLog/
├── HAMLOG GUI.py # 主程序(PyQt6 GUI)
├── AutoDeal.py # 后端模块(数据库、校验、设置管理)
├── ADIF.py # ADIF 导出和 LoTW 上传支持模块
├── ADIF_Export_Dialog.py # ADIF 导出对话框
├── LoTW_Upload_Dialog.py # LoTW 上传对话框(TQSL 签名 + HTTP 上传)
├── QRZ_Lookup_Dialog.py # QRZ.com 呼号查询模块
├── update_module.py # 自动更新模块(Gitee 版本检查 + GitHub 下载)
├── proxy_manager.py # 代理配置管理(HTTP/HTTPS/SOCKS5/系统代理)
├── proxy_settings_dialog.py # 代理设置对话框
├── font_manager.py # 字体管理(系统字体异步加载)
├── font_settings_dialog.py # 字体设置对话框
├── app_logger.py # 应用日志系统(SQLite 缓存 + 文件轮转)
├── log_viewer_dialog.py # 日志查看器(过滤、搜索、导出、实时刷新)
├── intertime.py # 网络延迟检测(Ping)
├── HamLog_UserLicense.txt # 用户协议与许可声明
├── LICENSE # GPL-3.0 许可证
├── README.md # 本文件
├── screenshots/ # 界面截图
└── Log.db # 本地 SQLite 数据库(运行时生成)
HamLog 使用 SQLite 本地数据库,默认存储路径:
| 系统 | 路径 |
|---|---|
| Windows | %APPDATA%\HamLog\Log.db |
| macOS | ~/Library/Application Support/HamLog/Log.db |
| Linux | ~/.local/share/HamLog/Log.db |
⚠️ 建议定期备份Log.db文件,以防数据丢失!
| 字段 | 说明 | 备注 |
|---|---|---|
id |
自增主键 | — |
Callsign |
对方呼号 | 自动转大写存储 |
Freq |
频率 | 如 144.000MHz,支持波段别名和数字解析 |
Year/Month/Day |
通联日期(UTC) | 用户输入本地时间,自动转换为 UTC 存储 |
Time |
通联时间(UTC,HHMM 或 HHMMSS) | 同上 |
Mode |
模式 | FM/SSB/CW/FT8/FT4/JT65/RTTY/PSK31 等 |
Power_self |
我的功率 | 如 5W |
Power_side |
对方功率 | 如 8W |
Rst_self |
对方给我的报告 | 如 59 |
Rst_side |
我给对方的报告 | 如 58 |
QTH |
通联地点 | — |
Device |
使用设备 | — |
QSL_RX |
收到 QSL 日期 | YYYYMMDD 格式 |
QSL_SEND |
发出 QSL 日期 | YYYYMMDD 格式 |
Remarks |
备注 | — |
CreateTime |
记录创建时间 | 自动填充 |
💡 时区说明:日志录入界面显示系统本地时区(仅作参考),数据库存储和 ADIF 导出均使用 UTC 时间。录入时输入本地时间,程序自动转换。主界面表格上方有 UTC 提示标签。
- 安装 TrustedQSL (TQSL) 并申请配置证书
- 在 HamLog 中通过 文件 → 导出为 ADIF 文件 导出
.adi文件 - 通过 工具 → 上传到 LoTW 选择
.adi文件,程序将自动调用 TQSL 签名并 HTTP 上传 - 支持自动查找 TQSL 安装位置、证书识别、台站位置选择、重复 QSO 处理策略
- 支持呼号自动查询国家(通过国旗图片识别)、QSL 方式、LoTW/eQSL 支持状态
- 查询结果可一键复制到剪贴板或应用到日志表单
- 支持代理访问
- 支持 HTTP / HTTPS / SOCKS5 手动代理
- 支持读取 Windows 系统代理设置(注册表)
- 内置代理连通性测试
- 代理配置自动应用到所有网络请求(urllib)
我们欢迎所有 HAM 和开发者的贡献!
⚠️ 注意:由于著作权归属需要,请不要直接提交 PR,只需要指出问题或想要加入的功能即可。
- 确定问题或功能需求
- 添加 Issue
本项目遵循 GNU General Public License v3.0 开源协议。
完整的许可证文本见 LICENSE 文件。
用户协议与许可声明见 HamLog_UserLicense.txt 文件。
HamLog - 业余无线电台日志管理系统
Copyright (C) 2026 HamLog Team
本程序是自由软件:你可以再发布本软件和/或修改本软件,
只要你遵守著作权法规和 GNU 通用公共许可证(GPL)第 3 版。
本程序是希望它能有用而发布的,但没有任何担保或特定用途适用性的隐含担保;
甚至没有适销性。详情请参阅 GNU 通用公共许可证。
| 文件 | 说明 |
|---|---|
update.txt |
自动更新配置文件,包含最新版本号、安装包下载链接和更新日志链接 |
changelog_Release_xxx.x.docx |
版本更新日志文档(Word 格式) |
这两个文件由更新模块自动获取,用于检测新版本和展示更新内容。
特别感谢以下人员与组织对 HamLog 开发的支持:
- BA8AQA — 项目发起人与核心开发
- BG5JQN — 旧版本(重构前实验版本)核心开发
- 所有提交 Issue 和反馈的爱好者
- 开源社区提供的优秀工具与库
| 平台 | 链接 |
|---|---|
| GitHub | ARPRC-BA8AQA/HamLog |
| Bilibili | @C盘研究所-中国_BA8AQA |
73 De BA8AQA 🎙️
愿电波永不消逝,友谊长存空中
