2016-08-13 2 views
-2

나는 여러 파일을 선택하고 이름을 인쇄 할 수있는 코드를 가지고있다. 그러나 나는 그들이 내가 그들을 선택하고있는 순서가 아니라는 것을 알았다. 인쇄하는 동안 처음 파일 2 다음 FILE3 다음 FILE1을 선택한 경우 나 FILE1, 파일 2, 파일 3으로 파일명이있는 경우, 예를 들면 말을하고이 순서 FILE1, 파일 2, 파일 3 보이고있다. 내가 작성한 코드는 내가 원하는 것을 달성하는 방법을 도와주십시오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

나는 그것을 실제로 시도하지 않았기 때문에 그렇게 생각하지 않았습니다. 나는 단지 당신에게 작동 할 수있는 무언가의 아이디어를 보여주고 싶었습니다. 아무도 먼저 대답하지 않으면 파이썬 편집기에 액세스하면 더 나은 것을 제공하려고 노력할 것입니다. – 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. 글쎄, 방금 작업 한 것으로 간주하는 코드를 복사했습니다. 어쨌든, 난 내 대답 리눅스에서 나를 위해 잘 작동 편집했습니다. – ekhumoro