def slot_pb_clicked(self, controls): name = controls.objectName() # print(name) if name == 'pb_add_files': file_list, _ = QtWidgets.QFileDialog.getOpenFileNames( self, '多文件选取', '', self.ext_filter, None, QtWidgets.QFileDialog.DontUseNativeDialog) # print(file_list) data = self.createDate(file_list) self.tableWidget.update_data(data) self.tableWidget.update_table() elif name == 'pb_open_dir': path = QtWidgets.QFileDialog.getExistingDirectory( self, "选取源文件夹", '', QtWidgets.QFileDialog.ShowDirsOnly) # 起始路径 if path: self.src_path = path self.lineEdit_src_dir.setText(path) self.src_files = Utils.files_in_dir(path, ['.doc', '.docx'], True) data = self._createDate(self.src_files) self.tableWidget.update_data(data) self.tableWidget.update_table() elif name == 'pb_clear': self.tableWidget.update_data(None) self.tableWidget.update_table() elif name == 'pb_save_path': path = QtWidgets.QFileDialog.getSaveFileName( self, "选取保存文件夹", '.', self.ext_filter) # 起始路径 if path: # self.save_path, self.save_file = os.path.splitdrive(path[0]) # self.save_path, self.save_file = os.path.splitext(path[0]) self.save_path, self.save_file = os.path.split(path[0]) self.save_path = path[0] # print(path) self.lineEdit_save_path.setText(self.save_path) elif name == 'pb_merge': rows = self.tableWidget.selectedItems() self.merge_files.clear() # self.files_weight.clear() for each in rows: file_name = each.text() file_path = os.path.join(self.src_path, file_name) # 构造完整路径 if os.path.isfile(file_path): self.merge_files.append(file_path) # self.files_weight.append(Utils.get_FileSize(file_path)) # print(self.files_weight) # print(self.save_path) if self.save_path: # path = os.path.join(self.save_path, self.save_file) # 构造完整路径 if self.merge_files: Utils.mergewords(self.merge_files, self.save_path, self.progressBar) else: AnimWin('请指定保存路径') else: pass
def slot_tools(self, action): try: # action = QtWidgets.QAction() text = action.text() # print(text) if text == '刷新': self.flushDir() if text == '打开': # fname = tkinter.filedialog.askdirectory() # print(fname) # return # dialog = QtWidgets.QFileDialog(self) # # dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen) # # dialog.setDirectory(self.data_path['dir_src']) # dialog.setFileMode(QtWidgets.QFileDialog.Directory) # # dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) # dialog.setViewMode(QtWidgets.QFileDialog.List) # # dir_path = dialog.getExistingDirectory() dir_path = QtWidgets.QFileDialog.getExistingDirectory( self, "选取源文件夹", self.data_path['dir_src'], QtWidgets.QFileDialog.ShowDirsOnly) # 起始路径 if dir_path: self.data_path['dir_src'] = dir_path self.flushDir() elif text == '保存': dir_path = QtWidgets.QFileDialog.getExistingDirectory( self, "选取保存目录", self.data_path['dir_dst']) # 起始路径 if dir_path: self.data_path['dir_dst'] = dir_path tmp = Utils.getSubStr(dir_path, 10) self.label_dst.setText(u'源文件目录:' + tmp) elif text == 'word 文件合并': '''合并word文档''' self.files_src.clear() self.files_dst.clear() self.listWidget_dst.clear() self.files_src = set([ item.text() for item in self.listWidget_src.selectedItems() ]) if len(self.files_src) <= 0: AnimWin(' 请选择需要转换的文件!', self) return path_all = [] for each in self.files_src: # print(each) ps = os.path.join(self.data_path['dir_src'], each) # 构造完整路径 path_all.append(ps) pd = os.path.join(self.data_path['dir_dst'], r'merged.doc') # 构造完整路径 # print(path_all) Utils.mergewords(path_all, pd) self.fun_callback(r'merged.doc') elif text == 'word 转 pdf': if not self.data_path['dir_src']: AnimWin(' 请选择源文件所在目录!', self) return if not self.data_path['dir_dst']: AnimWin(' 请选择保存文件的目录!', self) return if not self.files_all: AnimWin(' 未发现源文件!', self) return self.files_src.clear() self.files_dst.clear() self.listWidget_dst.clear() self.files_src = set([ item.text() for item in self.listWidget_src.selectedItems() ]) if len(self.files_src) <= 0: AnimWin(' 请选择需要转换的文件!', self) return # print("-----start-----") # start = timeit.default_timer() # cpu_num = Utils.GetCpuInfo()[0] # pool = multiprocessing.Pool(cpu_num) # for each in self.files_src: # # results = pool.apply_async(self.test, (i,)) # args = (each, self.data_path['dir_src'], self.data_path['dir_dst']) # pool.apply_async(self.fun_process, args, callback=self.fun_callback) # pool.close() # pool.join() # elapsed = (timeit.default_timer() - start) # print("-----end-----") # print(f'用时:{elapsed}秒') print("-----start-----") start = timeit.default_timer() for each in self.files_src: # print(each) ret = self.fun_process(each, self.data_path['dir_src'], self.data_path['dir_dst']) self.fun_callback(ret) elapsed = (timeit.default_timer() - start) print("-----end-----") print(f'用时:{elapsed}秒') except Exception as e: print(e)