2016-08-03 14 views
2

QFileDialogを使用して直接フォルダを参照する方法はありますか?PyQt - QFileDialog - 直接フォルダを参照しますか?

意味代わりに先のフォルダに移動しながら、各フォルダをダブルクリックすると、単にどこかのパスを入力するか、(Shiftキー+コマンド+ G)FinderでのMac OS X上で1のようにホットキーを使用し

ありがとう!

EDIT:(私のコード)

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

答えて

3

ネイティブファイルダイアログでは、プラットフォームによって提供される機能に嫌われています。使用しているプラ​​ットフォームのドキュメントを参照して、必要な機能が利用可能かどうかを調べることができます。

利用できない場合は、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を追加することができます:あなたが直接、別の道を開きたい場合はあなただけのpythonのディレクトリ機能ははos.pathモ​​ジュールに含まれて使用することができますダイアログの内部に埋め込まれています。パスをここに貼り付けることができます。ディレクトリを選択するための

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

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

それぞれパステキストフィールド特色にする:あなたは、静的QFileDialog機能を使用する場合は、あなたが買ってあげる

enter image description here

+0

それは私のために働いていない何らかの理由で..使用: 'QtGui.QFileDialog.getOpenFileName(自己、"ファイルをロード "フィルタ)'。私はそのパスのテキストフィールドを取得しません。 'filter'は特定のタイプのファイルを選択するために作成された文字列です。 – YaronGh

+0

そして私が下記のように、QFileDialogを設定してディレクトリを開き、表示されるデフォルトのパステキストフィールドにディレクトリパスを入力すると、そのフォルダを選択して戻るだけで、そこ。 – YaronGh

+0

おそらく、ダイアログのスクリーンショットと完全なコードを投稿しますか? – ospahiu

関連する問題