2016-08-03 245 views
2

有没有什么办法可以直接使用QFileDialog浏览文件夹?PyQt - QFileDialog - 直接浏览到一个文件夹?

含义,而不是每个文件夹双击在浏览到目标文件夹,只需某处输入路径或使用热键如一个(SHIFT +命令+ G)在Finder中Mac OS X上

谢谢!

编辑:(我的代码)

filter = "Wav File (*.wav)" 
    self._audio_file = QtGui.QFileDialog.getOpenFileName(self, "Audio File", 
                 "/myfolder/folder", filter) 
    self._audio_file = str(self._audio_file) 

回答

3

如果您使用静态QFileDialog功能,你会得到一个原生文件对话框,所以你会是李适应平台提供的功能。您可以查阅您平台的文档以查看您想要的功能是否可用。

如果它不可用,您将不得不解决Qt的内置文件对话框,并添加您自己的功能。对于您的特定用例,这应该很容易,因为内置对话框似乎已经拥有了您想要的内容。它有一个side-bar,显示用户可以直接导航到的“地点”列表。您可以设置自己的地方是这样的:

dialog = QtGui.QFileDialog(self, 'Audio Files', directory, filter) 
dialog.setFileMode(QtGui.QFileDialog.DirectoryOnly) 
dialog.setSidebarUrls([QtCore.QUrl.fromLocalFile(place)]) 
if dialog.exec_() == QtGui.QDialog.Accepted: 
    self._audio_file = dialog.selectedFiles()[0] 
+0

太棒了,'Sidebar'的东西肯定有帮助。谢谢! – YaronGh

0

下面你会发现一个简单的测试,在一定的路径直接打开的对话框中,在这种情况下将是当前工作目录。如果您想直接打开另一条路径,你可以只使用包含在os.path中模块Python的目录功能:

import sys 
import os 
from PyQt4 import QtGui 


def test(): 
     filename = QtGui.QFileDialog.getOpenFileName(
      None, 'Test Dialog', os.getcwd(), 'All Files(*.*)') 

def main(): 
    app = QtGui.QApplication(sys.argv) 

    test() 

    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main() 
+0

谢谢,但是这不是真的是我一直在寻找的。我的意思,我想,让用户浏览到特定的目录(不双击一路它)在文件对话框已被打开之后。 – YaronGh

+0

不知道如果我理解正确然后,getOpenFileName包括一个导航栏,您可以直接键入您的路径,而无需使用鼠标,是你想要的? – BPL

+0

是的,但是如果我设置我的QFileDialog打开目录,然后输入一个目录路径,它只是选择它并返回,并且不会导航到它并“停留”在那里。 – YaronGh

0

PyQt 4,你能够只需添加一个QFileDialog构建具有路径文本框的窗口嵌入在对话框中。你可以在这里粘贴你的路径。

QtGui.QFileDialog.getOpenFileName(self, 'Select file') # For file. 

为了选择一个目录:

QtGui.QFileDialog.getExistingDirectory(self, 'Select directory') 

每个将采用路径文本框

enter image description here

+0

由于某种原因,这对我不起作用..使用: 'QtGui.QFileDialog.getOpenFileName(self,“Load File”,filter)'。我没有得到那个路径文本框。 'filter'就是我创建的一个字符串,用于选择特定类型的文件。 – YaronGh

+0

就像我在下面提到的那样,如果我将我的QFileDialog设置为打开目录,然后在出现的默认路径文本字段中输入目录路径,它只是选择该文件夹并返回,它不会导航到它并“保留”那里。 – YaronGh

+0

也许张贴您的对话框和完整的代码截图? – ospahiu

相关问题