【Python+PyQt】pdf页面尺寸统计工具步骤二:获取拖入目录的所有pdf文件完整路径,存入file_path这个list中⑵

定义遍历指定目录下全部文件列表的函数get_files_recursion_from_dir()

def get_files_recursion_from_dir(path):
    """
    从指定的文件夹中使用递归的方式,获取全部的文件列表
    :param path: 被判断的文件夹
    :return: list,包含全部的文件,如果目录不存在或者无文件就返回一个空list
    """
    file_list = []
    if os.path.exists(path):
        for f in os.listdir(path):
            new_path = path + "/" + f
            if os.path.isdir(new_path):
                # 进入到这里,表明这个路径是文件夹不是文件
                file_list += get_files_recursion_from_dir(new_path)
            else:
                name, suf = os.path.splitext(new_path)
                if suf == '.pdf':
                    file_list.append(new_path)
    else:
        print(f"指定的目录{path},不存在")
        return []

    return file_list

 窗口对象的dragEnterEvent(self, event)中完善如下代码。

    def dragEnterEvent(self, event):
        file_path = []
        for url in event.mimeData().urls():
            str_url = str(url.toLocalFile())
            if os.path.isdir(str_url):
                list_current_all_file = get_files_recursion_from_dir(str_url)  # 获取当前目录下所有文件列表,包括子目录
                file_path.extend(list_current_all_file)
            else:
                name, suf = os.path.splitext(str_url)
                if suf == '.pdf':
                    file_path.append(str_url)

        for f in file_path:
            self.list_filelist.addItem(f)  # 将list中每一项添加到列表控件中

拖入“未知尺寸”目录,显示出其中所有文件的列表(包含子目录)。

这里是临时用了一个list控件。

本小节笔记

获取拖拽文件或目录的路径

event.mimeData().urls()返回了一个list,里面包含了所有拖入窗口的目录和文件路径。存在形式:

[PyQt5.QtCore.QUrl('file:///D:/own/pdf尺寸统计工具相关/演示/未知尺寸'), PyQt5.QtCore.QUrl('file:///D:/own/pdf尺寸统计工具相关/演示/1.jpg'), PyQt5.QtCore.QUrl('file:///D:/own/pdf尺寸统计工具相关/演示/新建文本文档.txt')]

最初找到的资料中,event.mimeData().urls()[0]太有局限性了。只给了列表中的第一项。如果每次仅拖入一个文件或一个目录,可以用。它的类型是<class 'PyQt5.QtCore.QUrl'>,用.toLocalFile()得到路径字符串。

 list的append()方法和extend()方法

如果当前路径是目录,则需遍历其中子目录得到所有文件,形成一个list_current_all_file列表,列表是常见的可迭代对象之一。在列表尾部一次增加另一个序列的多个值(用新列表扩展原列表),用extend()方法。

file_path.extend(list_current_all_file)

如果当前路径是文件,则取得其后缀名,判断后缀是否是“.pdf”,是pdf文件就将其加入到file_path列表中。追加单个元素到list尾部,用append()

file_path.append(str_url)

os.listdir(path)

返回了当前目录path下所有的文件和目录的名称列表。通过

new_path = path + "/" + f

组合成完整的路径字符串。

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以回答你的问题。对于Python软件页面制作门,使用PyQt架构可以非常方便地实现界面程序。以下是一个门示例,介绍如何使用PyQt设计师创建简单的界面程序。 1. 安装PyQt 首先,你需要安装PyQt。你可以使用pip进行安装: ``` pip install pyqt5 ``` 2. 创建一个界面程序 PyQt提供了Qt Designer,一个强大的可视化工具,可以帮助你创建和编辑界面。你可以使用Qt Designer来创建一个简单的界面程序。 在Qt Designer,你可以添加各种控件,例如按钮、标签和文本框等。在这个示例,我们将添加一个标签和一个按钮。 3. 将界面程序导出到Python文件 完成界面程序的设计后,你需要将其导出到Python代码。在Qt Designer,你可以选择“文件”>“导出”,然后选择“Python代码”作为导出类型。然后,你可以将导出的代码保存到一个.py文件。 4. 编写Python代码 使用PyQt来编写Python代码,将界面程序与功能代码相结合。在这个示例,我们将在按钮单击时显示一个消息框。 ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox from ui_mainwindow import Ui_MainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.show_message_box) def show_message_box(self): QMessageBox.information(self, "提示", "你单击了按钮!") if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个示例,我们首先导QApplication、QMainWindow和QMessageBox类,以及从Qt Designer导出的UI类。 接下来,我们创建一个MainWindow类,继承自QMainWindow,并在其初始化UI界面。我们还使用connect()函数将按钮的单击事件连接到一个名为show_message_box()的函数上。 最后,我们创建一个QApplication实例,并将MainWindow实例显示出来。在应用程序退出时,我们调用sys.exit()函数。 5. 运行程序 现在,你可以运行程序并测试它是否能正常工作。在命令行,进包含你的Python文件目录,并输以下命令: ``` python main.py ``` 你应该能够看到一个包含一个标签和一个按钮的窗口。当你单击按钮时,应该会显示一个消息框。 这就是如何使用PyQt和Qt Designer创建简单的界面程序的门示例。希望这对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月春生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值