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_())  # 进入应用程序的主循环并等待退出
相关推荐
databook11 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar12 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805112 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_12 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机19 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机20 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机20 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机20 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i20 小时前
drf初步梳理
python·django
每日AI新事件20 小时前
python的异步函数
python