繁体   English   中英

加快 QFileDialog 文件浏览器在默认目录中显示文件夹/文件的速度

[英]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 等于我的程序的工作目录的条件下有效。 例如,我在“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 中确认它,function“getExistingDirectory”仍然等待所有文件被加载,有点在后台。

这会使我的数据采集延迟一分钟。 “D://”是硬盘 DT01ACA100 1TB 和 ~800Gb 被占用。 我认为我的问题可以通过使用更快的驱动器来解决,但必须有一种方法来限制 Filebrowser 的 scope 它加载显示的文件,但我在文档中找不到这样的解决方法......我观察到,文件夹start_dir 中的文件在加载一小段时间后会被缓存。 延长这段时间也会有所帮助......

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM