2013-04-20 6 views
2

터미널에서 실행할 수있는 (Linux) GUI 응용 프로그램을 빌드했으며 인수로 정의되지 않은 파일 수를 허용합니다. 응용 프로그램은 sys.argv를 읽고 QListWidget에 이러한 파일의 이름을 나열합니다. 내가하고 싶은 것은 "열기 ..."옵션을 통해 파일 관리자에서 여러 파일을 선택하고 내 응용 프로그램과 함께 그들을 열 수있을 것입니다파일 관리자의 여러 파일 열기

import sys 
from PyQt4.QtGui import QApplication, QMainWindow, QCoreApplication 

class MainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 

     # parse command line arguments 
     for i in QCoreApplication.argv()[1:]: 
      ... 

def main(): 
    app = QApplication(sys.argv) 
    ... 

: 뭔가처럼

코드는 파일 관리자가 제공합니다. 이것이 어떻게 달성 될 수 있는가?

현재 코드를 사용하면 선택한 파일 중 하나만 QListWidget에 표시됩니다.

편집 :

마침내 파일 관리자에 따라 다름. 나는 ...

  • pcmanfm을 몇 가지 파일 관리자와 시도 : 그것은 단지 선택한 파일 중 하나를 엽니 다.

  • spacefm : 제대로 작동합니다!

  • 돌고래 : 각 파일을 내 프로그램의 다른 인스턴스로 엽니 다. 3 파일을 선택하면 각 파일마다 하나씩 내 앱이 세 번 열립니다.

  • 노틸러스 : 파일을 열지 못했습니다. 내 프로그램이 제안 된 응용 프로그램에 나열되어 있지 않으며 어떤 방법으로도이를 수행 할 수 없습니다.

답변

0

QFileDialog 사용 Documentation

+0

프로그램을 열 때 하나를 사용하지만 위의 설명과 같은 동작을 얻고 싶습니다. – Ilias95

1

가 명확한 대답을 줄 수있는 정말 충분한 정보가 아니다,하지만 ...

먼저, 당신은 코드 모양의 상단에있는 print sys.argv을 확인해야 네가 기대했던 것처럼? 당신이 라인을 변경하는 경우

그렇다면, 당신은 또한을 포함 할 수도 디버깅을 위해 ...

for i in QCoreApplication.argv()[1:]: 

...에 ...

for i in sys.argv[1:]: 

작동 하는가 라인 ...

assert QCoreApplication.argv()[1:] == sys.argv[1:] 

... for-loop를 시작하기 직전입니다.

+0

두 목록간에 차이가 없습니다. 나는 sys.argv를 인쇄하려고 시도했으나 응용 프로그램이 터미널에서 실행되지 않았고 stdout (?)이 없었기 때문에 (어떻게 알지는 못했습니다.) (좋아요, 로그 파일이 아마도 그렇게 할 것입니다). 하지만 문제가 발견 된 것 같습니다. 제 질문을 수정하겠습니다. 고맙습니다. – Ilias95

+0

@ Ilias95'sys.stdout = open ('/ tmp/logfile', 'w')'하면 모든 print 문이 그 파일로 리디렉션됩니다. – Aya

+0

당신 말이 맞아요. 다시 한 번 감사드립니다! – Ilias95