PyQt5 从零开始制作 PDF 阅读器(一)

关注微信公众号 Python高效编程后台回复 2019324 来获取源代码

此前,我已经写了三篇关于 Ui 界面的文章,分别是:猜数游戏、计时器程序和天气查询软件。这次,我们使用 Python 实现 PDF 阅读器。

第一篇文章,主要介绍如何实现主界面,以及添加、删除图书封面,后续会不断完善程序功能。

效果图

在这里插入图片描述

UI 设计

首先使用 Qt Designer 设计出图形界面:

新建一个 MainWindow 主界面,然后设置一个 toolbar,并在 toolbar 中添加三个 action,并为每个 action 设置好相应图标。

也可以直接 compile 我制作好的 PyReader.ui 文件,或者导入 Ui_PyReader.py 文件。

在这里插入图片描述

依赖要求
  • Python3

  • PyQt5

  • PyMuPDF

主要任务

我们使用 PyMuPDF 来解析 PDF ,来获取 PDF 文本信息。

  • 安装

我们只须在 cmd 中输入:pip install PyMuPDF,即可安装 PyMuPDF。

  • 导入
# 导入 PyMuPDF 
import fitz

在本节中,我们只需了解以下几个基本操作:

fitz.open() 函数用来读取 PDF 文件内容,doc.loadPage() 函数用来获取具体某一页的信息。特别的 ,我们使用loadPage(0) 来获取封面信息。

# 读取 PDF
doc = fitz.open(fname)
# 获取第 n 页内容
page = doc.loadPage(n)

本节主要的内容就是把封面渲染到主界面中,并完成添加与删除封面的任务。

显示表格

我们采用 QtWidgets.QTableWidget 表格控件来显示封面。

首先让我们设置表格样式与功能:

其中,我们设置了单元格的纵横比为 4 : 3,以及其他的一些静态属性,并将 self.table 与右键菜单绑定,支持点击单元格调用 self.generateMenu 函数。

def _setTableStyle(self):
    # 开启水平与垂直滚轴
    self.table.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
    self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
    # 设置 5 行 8 列 的表格
    self.table.setColumnCount(8)
    self.table.setRowCount(5)
    # 设置标准宽度
    self.width = self.screen.width() // 8
    # 设置单元格的宽度
    for i in range(8):
        self.table.setColumnWidth(i, self.width)
    # 设置单元格的高度
    # 设置纵横比为 4 : 3
    for i in range(5):
        self.table.setRowHeight(i, self.width * 4 
  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值