对不起,如果我错过了这个,但我似乎找不到解决这个问题的方法。
我在python 2.7中编写了一个小程序,使用Qt设计器来处理图形界面。我在某些时候调用file_dialog()来使用OS对话框屏幕找到我希望程序写入的目录。这就是出现问题的地方:
我在nautilus中有一个Windows共享驱动器:通过Places访问>连接到服务器...我可以通过nautilus查看所有文件,创建和销毁文件等,但是这个位置是不可见的从python调用file_dialog()。我甚至无法从命令行找到网络共享的安装位置。
file_dialog是一个已定义的函数:
def file_dialog(self):
dir_path = QtGui.QFileDialog.getExistingDirectory(self)
return dir_path
任何帮助都会非常感激,对不起,这可能是微不足道的。
提前多多感谢。
答案 0 :(得分:0)
Nautilus使用Gnome VFS(虚拟文件系统)层,因此它可以访问Windows(Samba)共享和其他网络资源,如FTP或HTTP / Webdav,以及非“经典文件系统资源”,如MTP。此功能实现为多个插件,每个插件用于特定类型的资源。
Pure Qt本身没有相应的可移植子系统,但请参阅this answer。如果您可以使用特定于KDE的库PyKDE,它们也有相应的子系统(称为KIO),它提供类似于GnomeVFS和Windows本机文件对话框的功能,请参阅this docs
更新:Windows和MacOSX具有“标准”文件对话框,您可能会按照上述配方中的说明使用它们。在Linux中(更准确地说,在X Window系统中,典型的PC-Linux安装的图形部分,例如Ubuntu)根本没有“系统对话框”,因为每个图形工具包(Qt,Gtk,Tk,Motif ,. ..)实现自己的一组图形基元,小部件和对话框。
KDE建立在“Qt基础”之上,因此纯Qt中未实现的功能可以通过特定于KDE的库进行相对无缝访问,这可能是最自然,最快速的解决方案。当然,你需要在Linux中使用KFileDialog而不是QFileDialog,并使用适当的标志,但其余的:事件传播系统,小部件样式等将在特定于Linux的代码和“可移植版本”中共享。
答案 1 :(得分:0)
感谢您的帮助,我找到了一个更简单的解决方法,如果我手动(从终端)将驱动器(使用mount.cifs)安装到Linux系统上的已知文件夹,那么QFileDialog完全可以与它进行交互。如果通过GUI安装驱动器,这只是一个问题。