使用python file_dialog()从Scientific linux访问windows共享上的网络文件夹

2024-05-15 23:55:06 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,如果我错过了这个,但我似乎找不到解决这个问题的办法。在

我用python2.7编写了一个小程序,使用Qt设计器处理图形界面。我在某个时候调用file_dialog()来使用OS dialog屏幕来定位我希望程序写入的目录。问题出现在这里:

我在nautilus中有一个windows共享驱动器:通过“位置”>;“连接到服务器”访问。。。我可以通过nautilus查看所有的文件,创建和销毁文件等,但是从python调用的file_dialog()中看不到这个位置。我甚至无法从命令行找到网络共享的挂载位置。在

“文件”对话框是一个已定义的函数:

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

任何帮助都将不胜感激,抱歉,这可能是一些微不足道的事情。在

事先非常感谢。在


Tags: 文件path定位self程序目录屏幕os
2条回答

Nautilus使用gnomevfs(虚拟文件系统)层,因此它可以访问Windows(Samba)共享和其他网络资源,如FTP或HTTP/Webdav,以及非“经典文件系统资源”,如MTP。这个特性被实现为一个特定类型的资源的多个插件。在

纯Qt本身没有相应的可移植子系统,但请参见this answer。如果您可以使用特定于KDE的库PyKDE,那么它们还有相应的子系统(称为KIO),它提供类似于GnomeVFS和Windows原生文件对话框的功能,请参见this docs

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

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

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

相关问题 更多 >