Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)