我这里有一个简单的PyQt5应用程序,可以将PDF转换为Excel。我想在下面convert方法中添加一个进度条,以便在单击按钮进行转换时能够更直观地显示执行进度,因为这需要一些时间来执行,所以拥有可视化效果会很好。
以下是我的代码:
我正在从Qtdesigner中加载UI。我还可以在某个位置添加一个进度条,该进度条可以附加到pushButton_3上。进度条可以称为“ProgressBar”。请告诉我如何完成它,因为大多数答案都没有真正回答这个问题。
以下是我的代码:
我正在从Qtdesigner中加载UI。我还可以在某个位置添加一个进度条,该进度条可以附加到pushButton_3上。进度条可以称为“ProgressBar”。请告诉我如何完成它,因为大多数答案都没有真正回答这个问题。
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QTableView, QWidget, QFileDialog,QPushButton,QVBoxLayout,QMessageBox
from PyQt5 import uic
from PyPDF2 import PdfFileReader
from PyQt5 import QtCore,QtGui
import pandas as pd
import tabula
import re
from PandasModel import PandasModel
class App(QMainWindow):
def __init__(self):
QWidget.__init__(self)
uic.loadUi('designUI.ui',self)
self.pushButton.clicked.connect(self.openFileNameDialog)
self.pushButton_3.clicked.connect(self.convert)
self.pushButton_2.clicked.connect(self.view)
self.pushButton_4.clicked.connect(self.saveFileDialog)
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"Open File", "","All Files (*);;Python Files (*.py)")#, options=options)
if fileName:
self.file=fileName
def view(self):
model=PandasModel(self.converted_file)
self.tableView.setModel(model)
def convert(self):
self.converted_file=self.pdf2excel(self.file)
def saveFileDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)")
if fileName:
self.converted_file.to_excel(fileName)
msg=QMessageBox()
msg.setText('File is Saved')
msg.setStandardButtons(QMessageBox.Ok)
#msg.buttonClicked.connect(msgbtn)
msg.exec_()
def pdf2excel(self,pdf_file):
pdf = PdfFileReader(open(pdf_file,'rb'))
length=pdf.getNumPages()
result=pd.DataFrame(columns=['Department','Employment No','Employment Name',"Hire Date","Term Date","Birth Date",
"Seniority Date","Pay Code","FT/PT/S","Status"])
page=1
while page <= length:
df=tabula.read_pdf(pdf_file, pages = str(page),lattice =True, area=(75.775,16.0,572.715,779.29))[1:]
pattern = re.compile(r'(\s){2,}')
df=pd.DataFrame(df[df.columns[0]].replace(pattern,","))
df=df['Unnamed: 0'].str.split(",",expand=True)
df=df.rename(columns={0:'Department',
1:'Employment No',2:'Employment Name',3:"Hire Date",4:"Term Date",5:"Birth Date",
6:"Seniority Date",7:"Pay Code",8:"FT/PT/S",9:"Status"})
result=result.append(df,ignore_index=True)
page+=1
result["Hire Date"]=pd.to_datetime(result["Hire Date"])
result["Term Date"]=pd.to_datetime(result["Term Date"])
result["Days Difference"]=(result['Term Date']-result['Hire Date']).dt.days
result=result.dropna(how='all')
result=result.drop(columns=['Birth Date','Pay Code','Status'])
result=result[['Department','Employment No','Employment Name',"Hire Date","Term Date","Days Difference",
"Seniority Date","FT/PT/S"]]
return result
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('pdf-to-excel-icon.png'))
ex = App()
ex.show()
sys.exit(app.exec_())
TypeError: QTimer(parent: QObject = None): argument 1 has unexpected type 'int'
- Kartikeya Sharmaself.converted_file
始终设置为None。它没有像我的代码中那样改变为获取的数据帧。请帮忙。 - Kartikeya Sharma