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_())  # 进入应用程序的主循环并等待退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945678.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL 实战:基于经纬度的距离计算与位置查询

在位置服务(LBS)系统中,基于地理位置查询和距离计算是核心功能之一。例如: 查找附近的商铺、加油站或医院。计算两点之间的实际直线距离。筛选出指定范围内的用户或设备位置。 MySQL 提供了多种方式实现地理位置查询&#xff0c…

一个最简单的ios程序(object_c)的编写

前言 如何在苹果系统MacOS创建一个简单的ios(iphone)程序,貌似非常的简单。但是,作为习惯了Windows开发的程序员来说,有时候还觉得有点麻烦,至少开始有点很不习惯。 本博文试着把这个过程展现一下&#xff…

高效搭建Nacos:实现微服务的服务注册与配置中心

一、关于Nacos 1.1 简介 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。Nacos 提供了简单易用…

Visual Studio 中增加的AI功能

前言: 人工智能的发展,在现在,编程技术的IDE里面也融合了AI的基本操做。本例,以微软的Visual Studio中的人工智能的功能介绍例子。 本例的环境: Visual Studio 17.12 1 AI 智能变量检测: 上图展示了一…

【SpringMVC】SpringMVC 快速入门

通常,Web 应用的工作流程如下: 用户通过浏览器访问前端页面; 前端页面通过异步请求向后端服务器发送数据; 后端采用“表现层-业务层-数据层”三层架构进行开发: 表现层接收页面请求将请求参数传递给业务层业务层访问…

如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈

如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈 h5如何转小程序 如果当年你们开发网站是用的h5但是没有开发小程序,也没有使用uniapp这样的混开框架,但是目前根据业务需…

C语言:位段

位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char (属于整形家族)类型 2. 位段的空间上是按照需要以4个字节( 类型 int )或者1个字节( char )的方式来开辟的。 3. 位段涉及…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中,ActiveX控件可以帮助实现与其他应用程序或第三方组件的集成(例如Microsoft Excel、Word、Internet Explorer等)。以下是一些建议,帮助您更好地在LabVIEW中使用ActiveX控件: ​ 1. 理解ActiveX控件的基本原…

Speckly:基于Speckle文档的RAG智能问答机器人

前言 Speckly 是一个基于 检索增强生成 (RAG) 技术的智能问答机器人,它能像一位经验丰富的工程师,理解你的问题,并从 Speckle 文档中精准地找到答案。更厉害的是,它甚至可以帮你生成代码片段!🚀 本文将详…

TencentOS 2.4 final 安装mysql8.0备忘录

准备 tencentOS 2.4 与Red Hat Enterprise Linux 7 是兼容的。 我们首先从oracle官网上下载mysql的源文件。 下载完成后你会得到以下文件: mysql84-community-release-el7-1.noarch.rpm 安装 首先你需要切换到root用户下。 1.安装源文件 yum localinstall my…

怎么在家访问公司服务器?

在日常工作中,特别是对信息技术从业者而言,工作往往离不开公司的服务器。他们需要定期访问服务器,获取一些关键的机密文件或数据。如果您在家办公,并且需要处理未完成的任务,同时需要从公司服务器获取所需的数据&#…

快速搭建springcloud 3.X+mybatis+nacos本地项目

环境&#xff1a; jdk17 idea 2019 springboot:3.2.4 spring-cloud:2023.0.1 大概记录下关键配置 1 创建父工程 创建项目 删除src目录 因为是父子结构不需要。 引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…

衣物褶皱织物褶皱检测数据集VOC+YOLO格式939张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;939 标注数量(xml文件个数)&#xff1a;939 标注数量(txt文件个数)&#xff1a;939 标注…

【C++】B2064 斐波那契数列

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式输出格式输入输出样例输入输出 &#x1f4af;思路分析**题目本质** &#x1f4af;代码实现与对比**我的代码实现**代码展示思路解析优点不足 **老师的代码…

springboot521基于Spring Boot的校园闲置物品交易系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装校园闲置物品交易系统软件来发挥其高效地信息处理的作用&am…

el-table动态行和列及多级表头

主页面 <template><div class"result-wrapper"><dynamic-table :table-data"tableData" :table-header"tableConfig" :tableTitle"tableTitle" :flowParams"flowParams"></dynamic-table></div…

【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…

2024年12月30日Github流行趋势

项目名称&#xff1a;free-programming-books 项目地址url&#xff1a;https://github.com/EbookFoundation/free-programming-books项目语言&#xff1a;HTML历史star数&#xff1a;343,398今日star数&#xff1a;246项目维护者&#xff1a;vhf, eshellman, davorpa, MHM5000,…

Mysql数据库Redo日志和Undo日志的理解

数据库redo日志和undo日志 1、redo日志1.1 redo日志的作用1.1.1 不使用redo日志的问题1.1.2 使用redo日志的好处 1.2 redo日志刷盘策略 2、undo日志2.1 undo日志的作用2.2 undo日志的简要生成过程 1、redo日志 事务的4大特性&#xff08;ACID&#xff09;&#xff1a;原子性、…

Windows配置cuda,并安装配置Pytorch-GPU版本

文章目录 1. CUDA Toolkit安装2. 安装cuDNN3. 添加环境变量配置Pytorch GPU版本 博主的电脑是Windows11&#xff0c;在安装cuda之前&#xff0c;请先查看pytorch支持的版本&#xff0c;cuda可以向下兼容&#xff0c;但是pytorch不行&#xff0c;请先进入&#xff1a;https://py…