500 行代码实现 PDF 阅读器
经过两周的迭代,现在我们的 PyReadon 已经具备一般的 PDF 阅读器的基本功能:
- 添加书籍
- 删除书籍
- 阅读书籍
- 保存记录
- 查看书籍信息
前几版相比较,这一版优化了书籍的数据结构,支持同时阅读多本书,支持鼠标左键翻页,并通过与 sqlite3 数据库的交互来保存书库以及书籍信息(地址、页数等)。
书籍
使用 Book 类来保存书籍信息,比如元数据、页数以及阅读与否的信息。通过 __eq__
特殊方法,来判断两个 book 实例是否为同一对象。
class Book:
def __init__(self, fname):
# 文件名
self.fname = fname
# 是否被阅读
self.flag = None
self._info = None
self._page = 0
self.get_meta_data(self.fname)
def __eq__(self, other):
if hasattr(other, 'fname'):
return self.fname == other.fname
return False
同时阅读
通过内部维护一个 read_list 列表来实现同时阅读多本书。列表储存 book 对象,每个 book 对象都有一个 pa