admin管理员组

文章数量:1621133

关注微信公众号 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 

本文标签: 阅读器从零开始PDF