0

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

我使用 Qt 设计器在 python 2.7 中编写了一个小程序来处理图形界面。我有时会调用 file_dialog() 以使用操作系统对话框屏幕来定位我希望程序写入的目录。这是问题出现的地方:

我在 nautilus 中有一个可用的 Windows 共享驱动器:通过 Places>Connect to server 访问...我可以通过 nautilus 查看所有文件,并创建和销毁文件等,但是从调用的 file_dialog( ) 来自 python。我什至无法从挂载网络共享的命令行中找到。

file_dialog 是一个已定义的函数:

def file_dialog(self):
    dir_path = QtGui.QFileDialog.getExistingDirectory(self)
    return dir_path

任何帮助将不胜感激,很抱歉这可能是微不足道的。

提前非常感谢。

4

2 回答 2

0

感谢您的帮助,我找到了一个更简单的解决方法,如果我手动(从终端)将驱动器(使用 mount.cifs)安装到 linux 系统上的已知文件夹,那么 QFileDialog 与它交互完全没有问题。如果驱动器是通过 GUI 安装的,这只是一个问题。

于 2015-01-13T11:05:47.370 回答
0

Nautilus 使用 Gnome VFS(虚拟文件系统)层,因此它可以访问 Windows (Samba) 共享和其他网络资源,如 FTP 或 HTTP/Webdav,以及非“经典文件系统资源”,如MTP。此功能以多个插件的形式实现,每个插件用于特定类型的资源。

Pure Qt 本身并没有相应的可移植子系统,但请参阅这个答案。如果您可以使用特定于 KDE 的库PyKDE,它们也有相应的子系统(称为KIO),它提供类似于 GnomeVFS 和 Windows 本机文件对话框的功能,请参阅此文档

更新:Windows 和 MacOSX 具有“标准”文件对话框,您可能可以按照上述配方中的说明使用它们。在 Linux 中(更准确地说,在 X Window 系统中,典型 PC-Linux 安装的图形部分,例如 Ubuntu)根本没有“系统对话框”,因为每个图形工具包(Qt、Gtk、Tk、Motif、. ..) 实现了自己的一组图形基元、小部件和对话框。

KDE 建立在“Qt 基础”之上,因此未在纯 Qt 中实现的功能可以通过 KDE 特定库相对无缝地访问,这可能是最自然和最快速的解决方案。当然,您需要在 Linux 中使用 KFileDialog 而不是带有适当标志的 QFileDialog,但其余的:事件传播系统、小部件样式等将在 Linux 特定代码和“便携式版本”中共享。

于 2015-01-09T09:09:15.393 回答