2016-06-30 4 views
1

유효한 키워드 아니고, 내가 파일 이름을 저장하려고하면 오류가 있습니다'selectedFilters은'나는 PyQt5 사용 인수

csv_file_list = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file', '', '*.csv') 
    fileName = csv_file_list 
    fileName = QtWidgets.QFileDialog.getSaveFileName(self, 'Dialog Title', '/path/to/default/directory', selectedFilters='*.txt') 
    if fileName: 
     print (fileName) 

을 그리고 그것은 나에게이 오류를 표시 키워드 인수. 오류가 여러 가지 이유로 여기 때문에 PyQt5의 여부를

+0

올바른 인수가 무엇인지 확인하려면 [documentation] (http://doc.qt.io/qt-5/qfiledialog.html)을 확인해보십시오. – ekhumoro

+0

질문 : QString QFileDialog :: getSaveFileName (QWidget * parent = Q_NULLPTR, const QString & 캡션 = QString(), const QString & dir = QString(), const QString & 필터 = QString(), QString * selectedFilter = Q_NULLPTR 옵션 옵션 = 선택 사항()) – Arkedrille

+0

하지만 문제가 무엇인지 찾을 수 없습니다 (selectedFilter 및 selectedFilters도 시도합니다) – Arkedrille

답변

2

경우 나도 몰라

는 C++ 서명은 항상 정확히 PyQt는 서명과 일치하지 않습니다. 이것은 아마 PyQt5의 가장 큰 약점 일 것입니다. C++ API와 PyQt API 사이의 모든 차이를 자세히 설명하는 포괄적 인 참조가 필요합니다. 의 종류는 PyQt Class Reference (Qt 문서의 부분 변환 버전 임) 형태로 PyQt4에 존재합니다. 그러나 현재 PyQt5와 동일한 것은 없습니다. 그러나 파이썬의 인트로 스펙 션 (introspection) 메소드를 사용하여 차이점을 직접 해결할 수 있습니다.

여기 getSaveFileName에 대한 C++ 서명 : 여기

QString getSaveFileName(QWidget *parent = Q_NULLPTR, 
         const QString &caption = QString(), 
         const QString &dir = QString(), 
         const QString &filter = QString(), 
         QString *selectedFilter = Q_NULLPTR, 
         Options options = Options() 
         ) 

그리고 파이썬 대화 형 세션에서 help function에서 획득 된 PyQt5 서명,의 - 즉 help(QtWidgets.QFileDialog.getSaveFileName) :

getSaveFileName(parent: QWidget = None, 
       caption: str = '', 
       directory: str = '', 
       filter: str = '', 
       initialFilter: str = '', 
       options: Union[QFileDialog.Options, QFileDialog.Option] = 0, 
       ) -> Tuple[str, str] 

당신이 볼 수 있듯이이 dir 인수가 directory으로 변경되고 selectedFilter 인수가 initialFilter으로 변경되었습니다.

+0

PyQt 4 및 Python 2.7을 사용하여 getSaveFileName에 대한 도움말 기능을 사용하면 "QFileDialog.getOpenFileName (QWidget parent = None, QString 캡션 = QString(), QString 디렉터리 = QString(), QString 필터 = QString(), QString selectedFilter = 없음, QFileDialog.Options 옵션 = 0) -> QString ". 5 번째 매개 변수를 selectedFilter = aComboBox.getText()로 설정하려고했지만 키워드 오류가 발생했습니다. 테스트를 마친 initialFilters 만 보았지만 여기서는 적용되지 않는다고 확신합니다. 도움이 잘못 해석 되었습니까? – user25976

+0

@ user25976 어떤 버전의 PyQt를 사용하고 있습니까? 키워드 인수에 대한 지원이 PyQt-4.7에 추가되었습니다. 'QFileDialog.getSaveFileNameAndFilter'를 사용하려고 했습니까? 다른 서명 (즉, 'initialFilter')이 있습니다. – ekhumoro

+0

필자가 제안한대로 getSaveFileNameAndFilter를 시도 했으므로 pyqt 4.11.4를 사용하고 있습니다. 내가 선택한 필터를 반환 할 수 있지만 어떤 이유로 초기 필터를 ("형식 TIFF (*. tiff * TIFF)"(콤보 상자에서 검색 한) 같은 뭔가를 initialFilter 설정하면 초기 필터를 그냥 앉아 있기 때문에 그것은 내 필터 목록의 첫 번째 것입니다.) ... hm .. – user25976