加快 QFileDialog 文件浏览器在默认目录中显示 folders/files

Speed up the QFileDialog File Browser displaying folders/files in the default directory

操作系统: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 等于我程序的工作目录的条件下工作。例如。我 运行 我的主程序通过 VScode 在“D://data_otto”和 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。我认为我的问题可以通过使用更快的驱动器来解决,但必须有一种方法来限制文件浏览器加载显示的文件范围,但我无法在文档中找到这样的解决方法......我观察到,文件夹start_dir 中的文件在短时间内加载后会被缓存。延长这个时间也有帮助...

好的,看来我通过断开出现在“这台电脑”下的两个不可访问的“网络位置”作为驱动器“Y:”和“Z:”解决了我的问题。它们无法访问(在资源管理器中显示为红叉),因为 PC 已与其本地网络断开连接并已移动到另一个网络。因此,只需右键单击它们并在下拉菜单中选择“断开连接”即可删除这些“网络位置”。之后,我的文件浏览器就再也没有问题了,所有需要的东西都会立即显示出来。没有了 delays/loading/buffering。感谢 https://whosebug.com/users/2001654/musicamante.