python - 使用 python file_dialog() 从 Scientific Linux 访问 Windows 共享上的网络文件夹

标签 python linux qt network-drive windows-share

抱歉,如果我刚刚错过了这个,但我似乎找不到解决此问题的方法。

我用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/

相关文章:

python - Kivy 文本输入换行

linux - gpg : Sorry, 根本没有请求终端 - 无法获得输入

linux - 如何附加到幽灵 screen session ?

qt - 在 Qt 中发布事件而不指定目标对象

java - 在 tensorflow 中沿轴选择随机数量的点

python - 如何检查列表中每一项的 'if condition'

javascript - 了解其他人是否同时使用该应用程序

java - 如何从java代码运行linux命令?

qt - Qt 中插件的自定义信号

python - 使用 PyQt,监 window 口大小和调整布局的首选(有效)方法是什么?