吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2068|回复: 24
上一主题 下一主题
收起左侧

[Python 原创] Python自研族谱管理软件,图形界面,家族树一键生成(附核心代码)

  [复制链接]
跳转到指定楼层
楼主
hubaoshu 发表于 2026-4-25 10:51 回帖奖励
大家好,自己用Python + PyQt6写了个本地族谱管理工具,可以管理家族成员、血缘关系、生成族谱树、导出PDF族谱。

软件功能一览

- 多用户登录,管理员可增删用户,操作日志追踪  
- 多家族管理,一键切换,数据独立  
- 成员信息:姓名、曾用名、性别、生卒、籍贯、职业、学历、照片  
- 关系绑定:父母、配偶,子女按性别独立排行
- 族谱树:从任意成员展开上下五代,节点显示姓名、世代、排行,可保存图片  
- 血缘查询:两人关系判定(父子、祖孙、兄弟姐妹等),查询祖先/后代/同辈  
- 统计信息:总人数、男女比、在世/已故、出生地/姓氏分布  
- 事件传记:记录成员升学、参军、结婚等大事  
- 姓氏/村庄简介:自由编辑保存  
- **导入导出**:导出Excel名单、PDF排版族谱,数据库备份恢复  

软件本地运行,数据安全,完全免费用。代码结构清晰,适合二次开发。如有问题欢迎留言交流,我尽量回复。

下载链接:https://pan.baidu.com/s/1TgOnt7ZnV7jf4afvcFe70Q?pwd=52pj 提取码: 52pj

默认登录密码:admin


1.数据库设计(SQLite,关系表支持按性别独立排序)
[Python] 纯文本查看 复制代码
CREATE TABLE IF NOT EXISTS persons (    id INTEGER PRIMARY KEY AUTOINCREMENT,
    family_id INTEGER DEFAULT 1,
    name TEXT NOT NULL,
    former_name TEXT DEFAULT '',
    gender TEXT, birth_date TEXT, death_date TEXT,
    birthplace TEXT, occupation TEXT, education TEXT, notes TEXT,
    photo BLOB, generation INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS relationships (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    person_id INTEGER NOT NULL,
    related_id INTEGER NOT NULL,
    rel_type TEXT NOT NULL,   -- 'father', 'mother', 'spouse'
    sort_order INTEGER DEFAULT 0   -- 同性别的排行
);

2.族谱树调用Graphviz生成图片(使用dot命令,支持中文)
[Python] 纯文本查看 复制代码
import subprocess, tempfile, os

def generate_tree_png(nodes, edges):
    tmp_dir = tempfile.mkdtemp()
    lines = ['digraph G {']
    lines.append('node [fontname="SimHei", shape=box];')
    for pid, info in nodes.items():
        name = info['name']
        gen = info['generation']
        rank = info.get('rank_title', '')  # 如“长子”
        label = f"{name}\\n第{gen}代\\n{rank}"
        lines.append(f'{pid} [label="{label}"];')
    for e in edges:
        lines.append(f'{e[0]} -> {e[1]};')
    lines.append('}')
    dot_source = '\n'.join(lines)
    dot_file = os.path.join(tmp_dir, 'tree.dot')
    png_file = os.path.join(tmp_dir, 'tree.png')
    with open(dot_file, 'w', encoding='utf-8') as f:
        f.write(dot_source)
    subprocess.run(['dot', '-Tpng', dot_file, '-o', png_file], check=True)
    return png_file

ScreenShot_2026-04-25_095103_315.png (33.18 KB, 下载次数: 1)

ScreenShot_2026-04-25_095103_315.png

ScreenShot_2026-04-25_095302_253.png (32.83 KB, 下载次数: 5)

ScreenShot_2026-04-25_095302_253.png

ScreenShot_2026-04-25_095216_066.png (30.51 KB, 下载次数: 1)

ScreenShot_2026-04-25_095216_066.png

ScreenShot_2026-04-25_095151_259.png (32.27 KB, 下载次数: 0)

ScreenShot_2026-04-25_095151_259.png

ScreenShot_2026-04-25_095128_089.png (20.65 KB, 下载次数: 0)

ScreenShot_2026-04-25_095128_089.png

免费评分

参与人数 7吾爱币 +11 热心值 +7 收起 理由
yjn866y + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
laozhang4201 + 1 + 1 热心回复!
wanfon + 1 + 1 热心回复!
cd1688 + 1 谢谢@Thanks!
shengruqing + 1 热心回复!
helh0275 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
jking 发表于 2026-4-26 12:37
Traceback (most recent call last):
  File "族谱管理软件.py", line 11, in <module>
ImportError: DLL load failed while importing QtWidgets: 找不到指定的模块。
推荐
heisefuyun 发表于 2026-4-26 08:18
不知道和Gramps相比如何。。最近也是刚下载的Gramps。还没开始用。github开源的软件  好像也不错。
沙发
停电了 发表于 2026-4-25 11:23
3#
moringstar 发表于 2026-4-25 11:46
不错的,一些大家族都可以用
4#
ahui0511 发表于 2026-4-25 11:49
实用的工具
5#
 楼主| hubaoshu 发表于 2026-4-25 11:54 |楼主
停电了 发表于 2026-4-25 11:23
加个打印功能,完美

可以导出后再打印
6#
wei363516609 发表于 2026-4-25 12:11
这个不错,我喜欢
7#
asky800 发表于 2026-4-25 12:56
好东西,一直想找个好用的族谱软件来着。
8#
wilson_lws82 发表于 2026-4-25 13:30
请问楼主有使用说明吗,刚好最近想更新一下族谱
9#
 楼主| hubaoshu 发表于 2026-4-25 13:55 |楼主
wilson_lws82 发表于 2026-4-25 13:30
请问楼主有使用说明吗,刚好最近想更新一下族谱

软件操作简单,上手零难度就没写说明书,你可以下载下来看看,有问题可以私信
10#
huangym 发表于 2026-4-25 15:53
应该不错,看见是这个网盘,头有点大,有其他盘吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-16 00:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表