当前位置: 首页 > news >正文

印度做网站网站建设多久可以学会

印度做网站,网站建设多久可以学会,域名服务器的主要功能,海口建设网站pdf工具#xff0c;之前写的合并工具有点麻烦#xff0c;使用PyQt5库重写合并拆分和删除指定页面的程序 实现如图#xff1a; 代码#xff1a; import sysimport osfrom PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QFileDia…pdf工具之前写的合并工具有点麻烦使用PyQt5库重写合并拆分和删除指定页面的程序 实现如图 代码 import sysimport osfrom PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QFileDialog, QListWidget, QMessageBox, QLineEdit, QHBoxLayout, QInputDialogfrom PyQt5.QtCore import Qt, QThread, pyqtSignalfrom PyPDF2 import PdfReader, PdfWriter, PdfMergerfrom PyQt5 import QtGuiclass CustomListWidget(QListWidget):def __init__(self, parentNone):super().__init__(parent)class Worker(QThread):finished pyqtSignal(str)error pyqtSignal(str)def __init__(self, pdf_files, range_strNone, save_pathNone, operationNone):super().__init__()self.pdf_files pdf_filesself.range_str range_strself.save_path save_pathself.operation operationdef run(self):try:if self.operation merge:merger PdfMerger()for pdf in self.pdf_files:merger.append(pdf)merger.write(self.save_path)merger.close()self.finished.emit(PDF文件已成功合并。)elif self.operation split:start_page, end_page self.parse_range(self.range_str)reader PdfReader(self.pdf_files[zxsq-anti-bbcode-0])os.makedirs(self.save_path, exist_okTrue)for page in range(start_page, end_page 1):writer PdfWriter()writer.add_page(reader.pages)split_save_path os.path.join(self.save_path, fPage_{page 1}.pdf)writer.write(split_save_path)self.finished.emit(PDF文件已成功拆分并保存。)elif self.operation delete:start_page, end_page self.parse_range(self.range_str)reader PdfReader(self.pdf_files[zxsq-anti-bbcode-0])writer PdfWriter()for page_num in range(len(reader.pages)):if not (start_page lt; page_num lt; end_page):writer.add_page(reader.pages[zxsq-anti-bbcode-page_num])writer.write(self.save_path)self.finished.emit(指定页面已从PDF中删除。)except Exception as e:self.error.emit(str(e))def parse_range(self, range_str):if - in range_str:start_page, end_page map(int, range_str.split(-))else:start_page end_page int(range_str)return start_page - 1, end_page - 1 # Convert to 0-based indexclass PDFMergerApp(QMainWindow):def __init__(self):super().__init__()self.initUI()self.pdf_files []def initUI(self):self.setWindowTitle(PDF 工具箱)self.setWindowIcon(QtGui.QIcon(111.ico))self.setGeometry(100, 100, 800, 600)mainLayout QVBoxLayout()self.addButton QPushButton(添加 PDF, self)self.addButton.clicked.connect(self.addPDF)mainLayout.addWidget(self.addButton)self.listWidget CustomListWidget(self)mainLayout.addWidget(self.listWidget)# 删除按钮的水平布局deleteLayout QHBoxLayout()self.removeButton QPushButton(删除选定, self)self.removeButton.clicked.connect(self.removeSelected)deleteLayout.addWidget(self.removeButton)self.removeAllButton QPushButton(删除全部, self)self.removeAllButton.clicked.connect(self.removeAll)deleteLayout.addWidget(self.removeAllButton)mainLayout.addLayout(deleteLayout)self.mergeButton QPushButton(合并 PDFs, self)self.mergeButton.clicked.connect(self.mergePDFs)mainLayout.addWidget(self.mergeButton)# 拆分和删除页码的水平布局splitDeleteLayout QHBoxLayout()self.splitInput QLineEdit(self)self.splitInput.setPlaceholderText(输入拆分范围如 1 或 1-4)splitDeleteLayout.addWidget(self.splitInput)self.splitButton QPushButton(拆分 PDF, self)self.splitButton.clicked.connect(self.splitPDF)splitDeleteLayout.addWidget(self.splitButton)self.deleteInput QLineEdit(self)self.deleteInput.setPlaceholderText(输入删除页码如 1 或 1-4)splitDeleteLayout.addWidget(self.deleteInput)self.deleteButton QPushButton(删除页面, self)self.deleteButton.clicked.connect(self.deletePages)splitDeleteLayout.addWidget(self.deleteButton)mainLayout.addLayout(splitDeleteLayout)container QWidget()container.setLayout(mainLayout)self.setCentralWidget(container)def addPDF(self):files, _ QFileDialog.getOpenFileNames(self, 打开文件, , PDF files (*.pdf))for file_path in files:self.addPDFFile(file_path)def addPDFFile(self, file_path):if file_path and file_path not in self.pdf_files:self.pdf_files.append(file_path)self.listWidget.addItem(file_path)def removeSelected(self):for item in self.listWidget.selectedItems():self.pdf_files.remove(item.text())self.listWidget.takeItem(self.listWidget.row(item))def removeAll(self):self.pdf_files.clear()self.listWidget.clear()def mergePDFs(self):save_path, _ QFileDialog.getSaveFileName(self, 保存文件, , PDF files (*.pdf))if save_path:self.thread Worker(self.pdf_files, save_pathsave_path, operationmerge)self.thread.finished.connect(self.onFinished)self.thread.error.connect(self.onError)self.thread.start()def splitPDF(self):if len(self.pdf_files) ! 1:QMessageBox.warning(self, 错误, 请只选择一个PDF文件进行拆分。)returnrange_str self.splitInput.text().strip()folder_path self.getFolderName()if range_str and folder_path:self.thread Worker(self.pdf_files, range_strrange_str, save_pathfolder_path, operationsplit)self.thread.finished.connect(self.onFinished)self.thread.error.connect(self.onError)self.thread.start()def getFolderName(self):folder_path QFileDialog.getExistingDirectory(self, 选择保存拆分文件的位置)if folder_path:folder_name, ok QInputDialog.getText(self, 文件夹名称, 输入文件夹名称:)if ok and folder_name:full_path os.path.join(folder_path, folder_name)os.makedirs(full_path, exist_okTrue)return full_pathreturn Nonedef deletePages(self):if len(self.pdf_files) ! 1:QMessageBox.warning(self, 错误, 请只选择一个PDF文件进行删除操作。)returnrange_str self.deleteInput.text().strip()save_path QFileDialog.getSaveFileName(self, 保存文件, , PDF files (*.pdf))[zxsq-anti-bbcode-0]if save_path and range_str:self.thread Worker(self.pdf_files, range_strrange_str, save_pathsave_path, operationdelete)self.thread.finished.connect(self.onFinished)self.thread.error.connect(self.onError)self.thread.start()def onFinished(self, message):self.show_message(操作完成, message)self.clear_pdf_list()def onError(self, error_message):self.show_message(操作失败, error_message)def show_message(self, title, message):QMessageBox.information(self, title, message)def clear_pdf_list(self):self.pdf_files.clear()self.listWidget.clear()def main():app QApplication(sys.argv)ex PDFMergerApp()ex.show()sys.exit(app.exec_())if __name__ __main__:main()
http://www.w-s-a.com/news/271954/

相关文章:

  • 莆田cms建站模板简述网站设计流程
  • 班级网站建设组织机构建设注册中心网站首页
  • 即墨网站建设地址怎么在文档中做网站一点就开
  • 做网站联系方式互联网行业分析
  • 杭州网站建设索q479185700高淳网站建设
  • 有什么做任务拿钱的网站精准的搜索引擎优化
  • 洛阳有建社网站的吗电力建设工程质量监督总网站
  • 网站404报错热水器网站建设 中企动力
  • 网站降权恢复淘宝 网站建设
  • 安州区建设局网站台州优秀关键词优化
  • 网站假设教程湖南微信管理系统
  • 网站备案属于公司哪一块哪个网站是专门做封面素材
  • 广州个人做网站内江建设局网站
  • 网站开发 360百科大连哪里有手机自适应网站建设维护
  • 如何查网站pv网站功防教程
  • 建设银行网站信息补充营销推广的作用
  • 网站见建设seo外链自动群发工具
  • 在境外做网站网站团购网站seo
  • 进网站后台加什么360推广 网站建设
  • 网站备案号码专做网站漏扫的工具
  • 罗店网站建设wordpress响应式
  • 网站怎么制作小程序wordpress实时获取qq资料
  • 网站的流量怎么赚钱经销做网站都有什么好处
  • 如何做好网站首页企术建站
  • 杭州网站建设咨询蓝韵网络聊城有制作网站的吗
  • 网站开发注意的事项深圳企业网站
  • 哈尔滨网站制作哪里专业网站建设维护有哪些内容
  • 花的网站建设规划书网络营销培训
  • 又拍云wordpress全站cdn无锡做网站品牌公司
  • 计算机网络工程网站建设黄石建设信息网站