当前位置:网站首页>Combine pyqt5 to develop one click conversion software for office documents, and there is no need to open members to transfer files in the future
Combine pyqt5 to develop one click conversion software for office documents, and there is no need to open members to transfer files in the future
2022-07-21 12:06:00 【InfoQ】
Preface
Get ready
pip install pdf2docx
pip install docx2pdf #word turn pdf
Practice
import sys
import os
from docx2pdf import convert
from pdf2docx import Converter
from PyQt5.QtWidgets import *
class MainForm(QWidget):
def __init__(self, name = 'MainForm'):
super(MainForm,self).__init__()
self.setWindowTitle(name)
self.cwd = os.getcwd() # Get the current program file location
self.resize(600,400) # Set the window size
# Select the file to be transferred
self.btn_chooseFile = QPushButton(self)
self.btn_chooseFile.setObjectName("btn_chooseFile")
self.btn_chooseFile.setText(" Select the file to be converted ")
# Save directory selection
self.btn_chooseDir = QPushButton(self)
self.btn_chooseDir.setObjectName("btn_chooseDir")
self.btn_chooseDir.setText(" Save to file ")
# Source
self.textEdit = QTextEdit(self)
self.textEdit.setEnabled(True)
self.textEdit.setAccessibleName("")
self.textEdit.setPlaceholderText(' Please select a file ')
self.textEdit.setFixedSize(580,30)
self.textEdit.setObjectName("textEdit")
# preservation
self.textEdit2 = QTextEdit(self)
self.textEdit2.setEnabled(True)
self.textEdit2.setAccessibleName("")
self.textEdit2.setPlaceholderText(' Please select the save Directory ')
self.textEdit2.setFixedSize(580, 30)
self.textEdit2.setObjectName("textEdit2")
# TXT Generate SQL
self.btn_saveFile = QPushButton(self)
self.btn_saveFile.setObjectName("btn_saveFiletxt2sql")
self.btn_saveFile.setText("TXT Generate SQL")
# Word turn PDF
self.btn_saveFile2 = QPushButton(self)
self.btn_saveFile2.setObjectName("btn_saveFilew2pdf")
self.btn_saveFile2.setText("Word turn PDF")
# PDF turn Word
self.btn_saveFile3 = QPushButton(self)
self.btn_saveFile3.setObjectName("btn_saveFilepdf2w")
self.btn_saveFile3.setText("PDF turn Word")
self.eittxt = QLabel(self)
self.eittxt.setText(" explain : Please select the corresponding button conversion according to the file type ")
self.eittxt.setObjectName("eittxt")
self.eittxt.setFixedSize(580, 30)
# Setting up layout
layout = QVBoxLayout()
layout.addWidget(self.btn_chooseFile)
layout.addWidget(self.textEdit)
layout.addWidget(self.btn_chooseDir)
layout.addWidget(self.textEdit2)
layout.addWidget(self.eittxt)
layout.addWidget(self.btn_saveFile)
layout.addWidget(self.btn_saveFile2)
layout.addWidget(self.btn_saveFile3)
self.setLayout(layout)
# Bind click event to button
self.btn_chooseDir.clicked.connect(self.slot_btn_chooseDir)
self.btn_chooseFile.clicked.connect(self.slot_btn_chooseFile)
self.btn_saveFile.clicked.connect(self.slot_btn_saveFile)
self.btn_saveFile2.clicked.connect(self.slot_wtopdfbtn_saveFile)
self.btn_saveFile3.clicked.connect(self.slot_pdftowbtn_saveFile)
def slot_btn_chooseDir(self):
fileName_choose, filetype = QFileDialog.getSaveFileName(self,
" Save the file ",
self.cwd, # Starting path
"All Files (*);;Text Files (*.txt)")
if fileName_choose == "":
print("\n deselect ")
return
print("\n You choose the file you want to save as :")
print(fileName_choose)
print(" File filter type : ", filetype)
self.textEdit2.setText(fileName_choose)
def slot_btn_chooseFile(self):
fileName_choose, filetype = QFileDialog.getOpenFileName(self,
" Select file ",
self.cwd, # Starting path
"All Files (*);;Text Files (*.txt)") # Set file extension filtering , Use double semicolon intervals
if fileName_choose == "":
print("\n deselect ")
return
print("\n The document you selected is :")
print(fileName_choose)
self.textEdit.setText(fileName_choose)
print(" File filter type : ",filetype)
#txt turn sql
def slot_btn_saveFile(self):
with open(self.textEdit.toPlainText(), 'r',encoding="utf-8") as file:
while True:
# readline() Default newline
txt = file.readline()
if txt:
print(txt, end='')
with open(self.textEdit2.toPlainText(), 'a+', encoding='utf-8') as wf:
text = 'insert into table (code) value ("' + txt + '"); \n'
wf.write(text)
else:
break
#word turn pdf
def slot_wtopdfbtn_saveFile(self):
convert(self.textEdit.toPlainText(), self.textEdit2.toPlainText())
#pdf turn word
def slot_pdftowbtn_saveFile(self):
# pdf File name
pdf_name = self.textEdit.toPlainText()
# To convert docx File name
docx_name = self.textEdit2.toPlainText()
# load pdf file
cv = Converter(pdf_name)
cv.convert(docx_name)
cv.close()
if __name__=="__main__":
app = QApplication(sys.argv)
mainForm = MainForm(" File conversion ")
mainForm.show()
sys.exit(app.exec_())
pyinstaller
pip install pyinstaller
pip install -i https://pypi.douban.com/simple/ pyinstaller # Douban source
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller # Tsinghua source


边栏推荐
- Unity Shader学习(五)鼠标移动方块
- 2021-9-19
- When antd Table + tooltip, the tooltip cannot move with the cell -- getpopupcontainer changes the tooltip floating layer rendering parent node
- 【excel】SUMIF合并单元格
- Introduction to chrome plug-in development -- CSDN login free copy, attention free view
- 联想曝新型UEFI漏洞,影响70款数百万台笔记本电脑
- The former backbone of WPS spent 10 years building new software. Excel users: I switched to WPS for this
- Varnish缓存代理服务器简介及主要特性
- How to set pf firewall on FreeBSD to protect web server
- Leetcode breaks the 8W mark
猜你喜欢
c语言初学者对puts()的问题
Could not resolve all dependencies for configuration
[problem solving] how to transfer files to win server
Leetcode outlook 2021
2021-9-21
MySQL realizes master-slave synchronization and master-master synchronization based on binlog
HTB-Lame
I.MX6U-系统移植-4-uboot移植
sqlilabs less-26~26a
Mongodb replication (replica set)
随机推荐
2021-9-18
创建型模式之单例模式
AIX mount NFS write inefficient solution
常用测试用例设计方法之边界值分析法
接口测试常用工具及测试方法(零基础篇)
【问题解决】 怎么传输文件到win服务器
1. Mx6u system migration-4-uboot migration
[MySQL] get table information and all column names
event. target
Aiops learning path
Antd Table + Tooltip 时Tooltip无法跟随单元格移动——getPopupContainer改变Tooltip浮层渲染父节点
SAKO搜索帮助增强(FB02科目搜索帮助)
模拟穷举 731. 我的日程安排表 II
sqlilabs less-25~25a
Mysql:Error Code 1235,This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME
Could not resolve all dependencies for configuration
go学习笔记(一)
strcmp()与if语句
Leetcode突破8W大关
Jetson tx2 NX是个怎样的产品?(Jetson tx2 NX如何提供强大的能效)