窗口对象的事件接着步骤二继续
【Python+PyQt】pdf页面尺寸统计工具步骤二:获取拖入目录的所有pdf文件完整路径,存入file_path这个list中⑵
def dragEnterEvent(self, event):
if len(file_path) == 0: # 如果文件列表为空,说明一个PDF文件都没有。
self.label_info.setText("一个PDF文件都没有。")
return
current_path = os.path.dirname(file_path[0])
self.setWindowTitle(current_path) # 窗口标题显示有点不合适,以后再改。
list_temp = []
list_unknownsize = [] # 记录全部文件的未知尺寸,以[['filename', {(297,420):6, (420,594):3}], [], []]的形式
for f in file_path:
# 注意记录未知尺寸的文件名。以['filename', {(297,420):6, (420, 594):3}]的形式。
dict_temp, dict_unknownsize = GetSizeNameAndCount(GetPdfsize(f)) # 临时字典变量和临时字符串变量分别接收此函数的两个返回值。第一个返回值是该文件的尺寸字典,第二个返回值是未知尺寸内容。
if len(dict_unknownsize) > 0: # 未知尺寸字典长度不为空,说明当前文件有未知尺寸明细。
list_unknownsize.append([f, dict_unknownsize])
list_temp.append([GetDirnameOfFile(f), dict_temp]) # 将当前这个文件的所在目录和它的尺寸字典,以两项列表的形式,添加到list_temp列表中。
list_samedir = SameDirSizeTotal(list_temp) # 合计相同上级目录的尺寸信息
list_total = total(list_samedir) # 作表格最后一行合计。
list_lastinfo = form_size_table(list_samedir) # 补全所有key列中的空值。便于在表格中展示。
list_lastinfo += list_total # 最后合计行的信息
里面用到了两个自定义函数 GetPdfsize()和GetSizeNameAndCount()
def GetPdfsize(filepath):
"""
根据传入的pdf文件路径,返回该文件的尺寸(长和宽),较小的值在左。注意要判断只接收pdf文件
:param filepath:
:return: 列表形式返回文件内页面尺寸,每一页尺寸一个元组,是列表中的一项。
"""
list_size = []
pdf = PyPDF2.PdfReader(filepath)
for