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_())  # 进入应用程序的主循环并等待退出
相关推荐
广药门徒几秒前
用Python替代OpenMV IDE显示openmv USB 图像
开发语言·ide·python
zxfeng~25 分钟前
深度学习之“缺失数据处理”
人工智能·python·深度学习
成都被卷死的程序员29 分钟前
从0开始,来看看怎么去linux排查Java程序故障
java·linux·运维·服务器
Ronin-Lotus30 分钟前
深度学习篇---深度学习框架
人工智能·pytorch·python·深度学习·tensorflow·paddlepaddle
山海青风43 分钟前
OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
运维·人工智能·爬虫·python·自动化·nlp·beautifulsoup
打鱼又晒网1 小时前
Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
linux·网络·tcp/ip
✿ ༺ ོIT技术༻1 小时前
Linux:宏观搭建网络体系
linux·服务器·网络
Rorsion1 小时前
PyTorch快速入门
人工智能·pytorch·python
苏-言1 小时前
Linux环境下的Java项目部署技巧:Nginx 详解
linux·运维·服务器