python - 加快 QFileDialog 文件浏览器在默认目录中显示文件夹/文件的速度
问题描述
操作系统:Win10,QT:PySide2
我在 python 中实现了一个程序,它从相机中获取图像。通过按下“开始序列”按钮触发该图像采集序列。为了确定我使用 QFileDialog 的图像的保存目录。因此,“开始序列”按钮首先打开一个文件浏览器,用户可以在其中选择要存储序列的文件夹。然后开始图像采集。文件浏览器的代码如下所示:
def get_dir(self, name) # name is only a string
start_dir = "D://data_someperson//"
dialog = QFileDialog()
options = dialog.Options()
options |= dialog.DontUseNativeDialog # i dont know what this is doing, but without it nothing works
dialog.setFileMode(QFileDialog.Directory)
filename = dialog.getExistingDirectory( None, name, start_dir, options = options)
return filename
如上所述,上面的代码在“start_dir”位置打开了一个文件浏览器。因此,文件浏览器将在“D://data_someperson//”中启动,用户可以从中创建新文件夹或选择现有文件夹。然后将其作为“文件名”返回,其中图像采集代码存储相机图片。现在这在 start_dir 等于我的程序的工作目录的条件下有效。例如,我在“D://data_otto”中通过 VScode 运行我的主程序,并且 start_dir 设置为“D://data_otto”。在这里,文件浏览器会立即(弹出时)显示“D://data_otto”中的所有现有文件,用户可以轻松创建新文件夹而不会出现任何问题。
我现在的问题如下:如果“start_dir”不等于“D://data_otto”(例如,它 start_dir 等于“D://data_peter”),文件浏览器会像往常一样在“start_dir”中弹出,但是基本上尝试“加载”我机器上的每个现有文件,然后在“start_dir”中显示文件,用户应该在其中选择一个保存目录。当用户在“start_dir”中创建新文件夹时也是如此。如果用户创建一个新文件夹并在 gui 中确认它,函数“getExistingDirectory”仍然等待所有文件被加载,有点在后台。
这会使我的数据采集延迟一分钟。“D://”是硬盘 DT01ACA100 1TB 和 ~800Gb 被占用。我认为我的问题可以通过使用更快的驱动器来解决,但是必须有一种方法来限制 Filebrowser 加载以显示的文件范围,但我在文档中找不到这样的解决方法......我观察到,文件夹start_dir 中的文件在加载一小段时间后会被缓存。延长这段时间也会有所帮助......
解决方案
好的,我通过断开两个无法访问的“网络位置”作为驱动器“Y:”和“Z:”出现在“这台电脑”下,解决了我的问题。它们无法访问(在资源管理器中显示为红十字),因为 PC 已与其本地网络断开连接并移至另一个网络。因此,只需右键单击它们并在下拉菜单中选择“断开连接”即可删除这些“网络位置”。之后,文件浏览器不再有任何问题,所需的一切都会立即显示出来。不再有延迟/加载/缓冲。感谢https://stackoverflow.com/users/2001654/musicamante。
推荐阅读
- node.js - 如何使用 sinon 从节点流中存根错误?
- java - TCP 通过 TETRA 协议
- docker - 从一个容器到另一个容器执行代码(即从 API 容器在工作容器上执行脚本)
- python - 将 RowNumber 添加到字典列表
- ios - 如何在 Swift 中重置 UICollectionView
- java - 在Java中以同一方法迭代多个列表的最佳方法是什么
- javascript - D3 设计可重用组件以在“调用”期间接受参数
- spring-boot - 如何为所有扩展类型请求制作控制器?
- excel - 如何锁定宏文件中记录的单元格并使它们具有不同的颜色(也锁定)
- python - 倒排索引,我可以保存单词的元组以及它来自哪里的 id