2016-08-03 3 views
2

QFileDialog를 사용하여 폴더를 직접 탐색 할 수있는 방법이 있습니까?PyQt - QFileDialog - 폴더를 직접 탐색 하시겠습니까?

의미 대신 대상 폴더로 이동하면서 각 폴더를 더블 클릭으로, 단순히 어딘가에 경로를 입력하거나 (Shift + 명령 + G) Finder에서 맥 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 기능을 사용하는 경우, 당신은 얻을 것이다 네이티브 파일 대화 상자이므로 li이됩니다. 플랫폼에 의해 제공되는 기능에 싫증이났다. 사용중인 플랫폼의 설명서를 참조하여 원하는 기능을 사용할 수 있는지 확인할 수 있습니다.

사용할 수없는 경우 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

위대한, '사이드 바'물건 확실히 도움이됩니다. 감사! – YaronGh

0

는 현재 작업 디렉토리가 될 것이다이 경우, 특정 경로에 직접 대화 상자를 엽니 다 간단한 테스트를 찾을 수 있습니다. PyQt 4에서

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

, 당신은 단지 경로 텍스트 필드가있는 창을 구성하기 위해 QFileDialog을 추가 할 수있어 : 직접 다른 경로를 열려면 당신은 파이썬의 디렉토리 기능을 os.path 모듈에 포함 사용할 수 있습니다 대화 상자 내부에 포함됩니다. 여기에 경로를 붙여 넣을 수 있습니다. 각각은 경로 텍스트 필드 기능을합니다

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

: 디렉토리를 선택

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

enter image description here

+0

나를 위해 작동하지 않는 몇 가지 이유로 .. 사용 : 'QtGui.QFileDialog.getOpenFileName (self, "Load File", filter)'. 나는 그 길 텍스트 필드를 얻지 못한다. 'filter'는 특정 유형의 파일을 선택하기 위해 만든 문자열입니다. – YaronGh

+0

그리고 아래에서 언급 한 것처럼 QFileDialog를 설정하여 디렉토리를 열고 표시되는 기본 경로 텍스트 필드에 디렉토리 경로를 입력하면 해당 폴더를 선택하고 반환하며 경로를 탐색하지 않고 '계속' 그곳에. – YaronGh

+0

아마도 대화 상자의 스크린 샷과 전체 코드를 게시 하시겠습니까? – ospahiu