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

Python 加快QFileDialog文件浏览器在默认目录中显示文件夹/文件的速度,python,python-3.x,qt,pyside2,qfiledialog,Python,Python 3.x,Qt,Pyside2,Qfiledialog,操作系统:Win10,QT:PySide2 我用python实现了一个程序,可以从相机中获取图像。按下“开始序列”按钮可触发此图像获取序列。要确定图像的保存目录,我使用QFileDialog。因此,“开始序列”按钮首先打开一个文件浏览器,用户可以在其中选择要存储序列的文件夹。然后开始图像获取。文件浏览器的代码如下所示: def get_dir(self, name) # name is only a string start_dir = "D://data_someperson

操作系统: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\u someperson/”中启动,用户可以从中创建新文件夹或选择现有文件夹。然后将其作为“文件名”返回,其中图像获取代码存储相机图片。现在,它在start_dir等于程序的工作目录的条件下工作。例如,我通过“D://data\u-otto”中的VScode运行我的主程序,并且start\u-dir设置为“D://data\u-otto”。在这里,文件浏览器会立即(在弹出时)显示“D://data\u otto”中的所有现有文件,用户可以轻松创建新文件夹,而不会出现任何问题

我现在的问题是:如果“start\u dir”不等于“D://data\u otto”(例如,它的start\u dir等于“D://data\u peter”),则文件浏览器会像往常一样在“start\u dir”中弹出,但基本上是在“start\u dir”中显示文件之前尝试“加载”我机器上的所有现有文件,用户应该在“start\u dir”中选择一个保存目录。当用户在“start_dir”中创建新文件夹时,也是如此。如果用户创建了一个新文件夹并在gui中确认,函数“getExistingDirectory”仍然会在后台等待加载所有文件


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

好的,我通过断开“这台电脑”下出现的驱动器“Y:”和“Z:”这两个不可访问的“网络位置”来解决问题。由于电脑与本地网络断开连接,并被移动到另一个网络,因此无法访问(在浏览器中显示为红十字)。因此,只需点击鼠标右键并在下拉菜单中选择“断开”即可删除这些“网络位置”。之后,我没有更多的问题与文件浏览器和一切需要立即显示。不再有延迟/加载/缓冲。谢谢。

您有类似的网络挂载吗?在
DontUseNativeDialog
标志旁边添加“nothing works”是什么意思?您是否尝试在vscode之外运行程序?(不相关,但仍然值得注意:
getExistingDirectory
是一个静态函数,您不需要为它创建实例,因为该函数自己创建一个实例,您可以直接使用
QFileDialog.getExistingDirectory(…)
)您好。这里的“不起作用”意味着程序基本上冻结在打开文件浏览器的功能中,不再响应。网络问题可能是真的,因为这台电脑是由几个人通过我们的内部网络访问服务器使用的。这台电脑下面列出了两个“网络位置”(Y:和Z:),它们似乎是不可访问的(用一个大的红十字表示)。