2016-08-13 24 views
-2

私は複数のファイルを選択してその名前を印刷するコードを持っています。しかし、私は彼らが私がそれらを選択している順序ではないことが分かった。印刷中に、私が最初にFILE2その後、FILE3その後、FILE1を選択した場合、私はFILE1、FILE2、FILE3としてファイル名を持っている場合などと言うと、それはこの順番でFILE1、FILE2、FILE3を示しています。 私が書いたコードは、私が欲しいものを達成するためにどのように助けてください、このpyqtでファイルを選択する方法は?

global desktop1 
    global filesnames1 
    file_name = QtGui.QFileDialog() 
    file = file_name.getOpenFileNames(self, "Select the file to add", desktop1, 
                 "source File (*.MOV;*.MP4)") 

    filesnames1=list(file) 
    for i in filesnames1: 
     print i 

のようなものです。

+0

変数を** list **とするのではなく、解決策が見つかりました。** set *として宣言する必要があります。 * coz listは、setがそうでない要素を常にソートします。 –

+0

これは完全に間違っています。セットには定義された順序はありません。ファイルのリストをセットに変換すると、それらのファイルを反復するときに望む順番で表示されると、それは完全に一致します。より多くのファイルを選択してみてください。それらのファイルを反復処理するときに「間違った」順序で表示されることはほとんど確実です。 – ekhumoro

+0

@ekhumoroはいu r右。正しくチェックせずに決定に来て申し訳ありません。 –

答えて

0

私はそのための方法があるとは思わないが、あなたは選択を取得し、前のと比較して、QFileDialogの活性化にその機能を接続するための関数を書くことができます。

global desktop1 
global previous_selection 
global filesnames1 
QtGui.QFileDialog.currentChanged(get_selection) 
file_name = QtGui.QFileDialog() 


def get_selection(previous_selection): 
    file = file_name.getOpenFileNames(self, "Select the file to add", desktop1, 
                "source File (*.MOV;*.MP4)") 
    selected_files=list(file) 
    if len(selected_files) > 1: 
     current_file = selected_files-filenames1 
     filenames1.append(current_file) 
    else: 
     filenames1=list() 
     filenames1.append(selected_files[0]) 

私はそのコードを試していませんでしたが、そのようなことはそのトリックを行うだろうと思います。デフォルトでは

+0

申し訳ありませんが動作していません。 –

+0

私は実際にそれが(それを試していないので)それのように動作するとは思わなかった、私はちょうどあなたに働くことができる何かのアイデアを示したいと思った。 最初に誰も答えなければ、Pythonエディタにアクセスすれば、もっと良いものを手に入れようとします。 – Martin

2

static functions可能な限りネイティブファイル・ダイアログを開きます(getOpenFileNamesのように)。ネイティブのファイルダイアログでは、Qtは返されるファイルの順序を制御できないため、変更することはできません。

しかし、内蔵の Qtのファイル・ダイアログは、彼らが選択した順序でファイルを返すないようです。

files = QFileDialog.getOpenFileNames(
    self, "Select the file to add", desktop1, "source File (*.mov *.mp4)", 
    options=QFileDialog.DontUseNativeDialog 
    ) 
+0

このコードで試してみると.MOVまたは.MP4ファイルは表示されません。実際には他のファイルタイプを試すときにファイルを表示していません –

+0

@RamakantaChandraさて、あなたのコードをコピーしました。とにかく、私はLinux上でうまく動作する私の答えを編集しました。 – ekhumoro

関連する問題