抱歉,如果我刚刚错过了这个,但我似乎找不到解决此问题的方法。
我用Python 2.7编写了一个小程序,使用Qt设计器来处理图形界面。我在某个时候调用 file_dialog() 以使用操作系统对话框屏幕来定位我希望程序写入的目录。这就是问题出现的地方:
我在 nautilus 中有一个可用的 Windows 共享驱动器:通过 Places>Connect to server 访问...我可以通过 nautilus 查看所有到位的文件,并创建和销毁文件等,但是从 python 调用的 file_dialog() 中看不到该位置。我什至无法从命令行找到安装网络共享的位置。
file_dialog 是一个已定义的函数:
def file_dialog(self):
dir_path = QtGui.QFileDialog.getExistingDirectory(self)
return dir_path
任何帮助将不胜感激,很抱歉这可能是微不足道的事情。
提前非常感谢。
最佳答案
Nautilus 使用 Gnome VFS(虚拟文件系统)层,因此它可以访问 Windows (Samba) 共享和其他网络资源(如 FTP 或 HTTP/Webdav)以及非“经典文件系统资源”(如 MTP) 。此功能通过多个插件实现,每个插件针对特定类型的资源。
纯 Qt 本身没有相应的可移植子系统,但请参阅 this answer 。如果您可以使用 KDE 特定的库 PyKDE ,它们还有相应的子系统(称为 KIO ),提供类似于 GnomeVFS 和 Windows native 文件对话框的功能,请参阅 this docs
更新:Windows 和 MacOSX 有“标准”文件对话框,您可能可以按照上述方法中的描述使用它们。在 Linux 中(更准确地说,在 X Window 系统中,典型 PC-Linux 安装的图形部分,例如 Ubuntu)根本没有“系统对话框”,因为每个图形工具包(Qt、Gtk、Tk、Motif...)都实现了自己的一组图形基元、小部件和对话框。
KDE 建立在“Qt 基础”之上,因此可以通过 KDE 特定的库相对无缝地访问纯 Qt 中未实现的功能,这可能是最自然、最快速的解决方案。当然,您需要在 Linux 中使用 KFileDialog,而不是具有适当标志的 QFileDialog,但其余的:事件传播系统、小部件样式等将在 Linux 特定代码和“可移植版本”中共享。
关于python - 使用 python file_dialog() 从 Scientific Linux 访问 Windows 共享上的网络文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843425/