pyqt5 设计pdf 和word文件互相转换小程序

给自己编写一个免费简单的设计pdf 和word文件互相转换小程序,使用pyqt5 做ui设计。

代码如下:

复制代码
# 导入必要的库和模块
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
from pdf2docx import Converter
from docx2pdf import convert
import re
import sys

# 设置应用程序的显示属性,启用高DPI缩放
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

# 定义主窗口类,继承自QMainWindow
class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()  # 调用父类的构造函数
        self.setupUi(self)  # 初始化窗体设置

    # 设置UI界面的方法
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")  # 设置窗口对象名称
        MainWindow.resize(463, 107)  # 设置窗口大小
        MainWindow.setStyleSheet("")  # 设置窗口样式表
        MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)  # 只显示最小化和关闭按钮
        self.centralwidget = QtWidgets.QWidget(MainWindow)  # 创建中央部件
        self.centralwidget.setObjectName("centralwidget")  # 设置中央部件对象名称
        self.btopenFile = QtWidgets.QPushButton(self.centralwidget)  # 创建打开文件按钮
        self.btopenFile.setGeometry(QtCore.QRect(290, 20, 75, 23))  # 设置按钮位置和大小
        self.btopenFile.setObjectName("btopenFile")  # 设置按钮对象名称
        self.edit_openFilePwd = QtWidgets.QLineEdit(self.centralwidget)  # 创建输入框用于显示打开的文件路径
        self.edit_openFilePwd.setGeometry(QtCore.QRect(110, 20, 171, 20))  # 设置输入框位置和大小
        self.edit_openFilePwd.setObjectName("edit_openFilePwd")  # 设置输入框对象名称
        self.btsaveFile = QtWidgets.QPushButton(self.centralwidget)  # 创建保存文件按钮
        self.btsaveFile.setGeometry(QtCore.QRect(290, 50, 75, 23))  # 设置按钮位置和大小
        self.btsaveFile.setObjectName("btsaveFile")  # 设置按钮对象名称
        self.fileconvert = QtWidgets.QPushButton(self.centralwidget)  # 创建转换文件按钮
        self.fileconvert.setGeometry(QtCore.QRect(380, 30, 61, 51))  # 设置按钮位置和大小
        self.fileconvert.setObjectName("fileconvert")  # 设置按钮对象名称
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)  # 创建下拉选择框
        self.comboBox.setGeometry(QtCore.QRect(10, 30, 91, 31))  # 设置下拉选择框位置和大小
        self.comboBox.setObjectName("comboBox")  # 设置下拉选择框对象名称
        self.comboBox.addItem("")  # 在下拉选择框中添加空选项
        self.comboBox.addItem("")  # 在下拉选择框中添加空选项
        MainWindow.setCentralWidget(self.centralwidget)  # 设置中央部件为主窗口的中心部件
        self.statusbar = QtWidgets.QStatusBar(MainWindow)  # 创建状态栏
        self.statusbar.setObjectName("statusbar")  # 设置状态栏对象名称
        MainWindow.setStatusBar(self.statusbar)  # 将状态栏设置为主窗口的状态栏

        # 连接按钮点击事件到相应的槽函数
        self.btopenFile.clicked.connect(self.openfile)
        self.btsaveFile.clicked.connect(self.savefile)
        self.fileconvert.clicked.connect(self.file_convert)

        # 重新翻译UI界面文本
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)  # 自动连接信号和槽

    # 打开文件的方法
    def openfile(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", "PDF Files (*.pdf);;All Files (*)", options=options)  # 打开文件对话框获取PDF文件路径
            if filename:
                self.openfilepath = filename[0]  # 获取选中的文件路径
                self.edit_openFilePwd.setText(self.openfilepath)  # 在输入框中显示文件路径
                self.wordfilepath = re.sub(r'\.pdf$', '.docx', self.openfilepath)  # 根据PDF文件路径生成Word文件路径
                self.edit_saveFilePwd.setText(self.wordfilepath)  # 在输入框中显示Word文件路径
                self.statusbar.showMessage(f'Selected file: {self.openfilepath}')  # 在状态栏显示选中的文件路径
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", "WORD Files (*.docx);;All Files (*)", options=options)  # 打开文件对话框获取Word文件路径
            if filename:
                self.openfilepath = filename[0]  # 获取选中的文件路径
                self.edit_openFilePwd.setText(self.openfilepath)  # 在输入框中显示文件路径
                self.wordfilepath = re.sub(r'\.docx$', '.pdf', self.openfilepath)  # 根据Word文件路径生成PDF文件路径
                self.edit_saveFilePwd.setText(self.wordfilepath)  # 在输入框中显示PDF文件路径
                self.statusbar.showMessage(f'Selected file: {self.openfilepath}')  # 在状态栏显示选中的文件路径

    # 保存文件的方法
    def savefile(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getSaveFileName(self, "QFileDialog.getOpenFileName()", "", "WORD Files (*.docx);;All Files (*)", options=options)  # 打开文件对话框获取保存路径
            if filename:
                self.savefilepath = filename[0]  # 获取保存路径
                self.edit_saveFilePwd.setText(self.savefilepath)  # 在输入框中显示保存路径
                self.statusbar.showMessage(f'save file: {self.savefilepath}')  # 在状态栏显示保存路径
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getSaveFileName(self, "QFileDialog.getOpenFileName()", "", "PDF Files (*.pdf);;All Files (*)", options=options)  # 打开文件对话框获取保存路径
            if filename:
                self.savefilepath = filename[0]  # 获取保存路径
                self.edit_saveFilePwd.setText(self.savefilepath)  # 在输入框中显示保存路径
                self.statusbar.showMessage(f'save file: {self.savefilepath}')  # 在状态栏显示保存路径

    # 文件转换的方法
    def file_convert(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            try:
                cv = Converter(self.openfilepath)  # 创建PDF转换器对象
                cv.convert(self.wordfilepath, start=0, end=None)  # 执行转换操作
                cv.close()  # 关闭转换器对象
                self.statusbar.showMessage(f'{self.wordfilepath} 转换成功!')  # 在状态栏显示转换成功信息
            except Exception as e:
                self.statusbar.showMessage(f'Error during conversion: {str(e)}')  # 如果发生错误,在状态栏显示错误信息
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            _wordFile = self.edit_openFilePwd.text()  # 获取Word文件路径
            _pdfFile = self.edit_saveFilePwd.text()  # 获取PDF文件路径
            convert(_wordFile, _pdfFile)  # 执行转换操作
            self.statusbar.showMessage(f'{_pdfFile} 转换成功!')  # 在状态栏显示转换成功信息

    # 重新翻译UI界面文本的方法
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate  # 获取翻译函数
        MainWindow.setWindowTitle(_translate("MainWindow", "file_convert"))  # 设置窗口标题
        self.btopenFile.setText(_translate("MainWindow", "打开文件"))  # 设置打开文件按钮文本
        self.btsaveFile.setText(_translate("MainWindow", "保存路径"))  # 设置保存路径按钮文本
        self.fileconvert.setText(_translate("MainWindow", "开始转换"))  # 设置开始转换按钮文本
        self.comboBox.setItemText(0, _translate("MainWindow", "Pdf 转 Word"))  # 设置下拉选择框第一项文本
        self.comboBox.setItemText(1, _translate("MainWindow", "Word 转 Pdf"))  # 设置下拉选择框第二项文本

if __name__ == "__main__":
    app = QApplication(sys.argv)  # 创建应用程序对象
    window = Ui_MainWindow()  # 创建主窗口对象
    window.show()  # 显示主窗口
    sys.exit(app.exec_())  # 进入应用程序的主循环并等待退出
相关推荐
程序员三藏2 小时前
接口测试及常用接口测试工具总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
小二·4 小时前
Python Web 开发进阶实战 :AI 原生数字孪生 —— 在 Flask + Three.js 中构建物理世界实时仿真与优化平台
前端·人工智能·python
小天源4 小时前
linux漏洞一键扫描
linux·运维·服务器·漏洞扫描
hmywillstronger5 小时前
【Rhino】【Python】 查询指定字段并cloud标注
开发语言·python
dyyx1115 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
二十雨辰5 小时前
[python]-函数
开发语言·python
CryptoRzz5 小时前
如何高效接入日本股市实时数据?StockTV API 对接实战指南
java·python·kafka·区块链·状态模式·百度小程序
码农水水5 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php
小二·6 小时前
Python Web 开发进阶实战(终章):从单体应用到 AI 原生生态 —— 45 篇技术演进全景与未来开发者生存指南
前端·人工智能·python
极客小云6 小时前
【基于 PyQt6 的红外与可见光图像配准工具开发实战】
c语言·python·yolo·目标检测