1

選択したファイルの場所を文字列としてPythonに保存したいと思います。私はこれを達成するためにQFileDialogを使用しようとしています、私は持っています:

self.filedialog = QtGui.QFileDialog(self)
self.filedialog.show()
filepath = str(self.filedialog.getOpenFileName())

これにより、2つのQFileDialogウィンドウが開きます。興味深いことに、ウィンドウの1つはGUIの「スタイル」を継承せず、setStyleを設定しますが、ファイルパス文字列を返します。他のQFileDialogはスタイルを継承しますが、ファイルパス文字列を返すことはできません。QFileDialogのドキュメントは役に立ちましたが、ファイルパス文字列を生成し、GUIのスタイルを継承するQFileDialogボックスを作成できませんでした。私はどのような間違いを犯していますか?

4

3 に答える 3

2

実際に 2 つのウィンドウを作成しました。

この関数QFileDialog.getOpenFileNameは静的です。つまり、独自のQFileDialogオブジェクトを作成し、ウィンドウを表示し、ユーザーがファイルを選択するのを待って、選択したファイル名を返します。

その行だけが必要です:

filepath = str(QFileDialog.getOpenFileName())

アプリケーション レベルで ( を使用してQApplication.setStyle) スタイルを設定すると、非ネイティブ ダイアログを使用すると、ウィンドウに適用される場合があります。

filepath = str(QFileDialog.getOpenFileName(options=QFileDialog.DontUseNativeDialog)))
于 2012-07-13T22:47:33.797 に答える
1

getOpenFileName「モーダルファイルダイアログを作成する」便利な機能です。そのため、2 番目のダイアログが表示されます。

filedialog.exec()ダイアログを表示しfileDialog.selectedFiles()、ファイル名を取得するために使用します。

于 2012-07-13T22:43:46.120 に答える
-1

exec は Python の予約語です。exec_() を使用する必要があります。

dialog = QFileDialog(self)
dialog.exec_()
for file in dialog.selectedFiles():
    print file
于 2013-07-19T01:53:59.457 に答える