2017-04-20 4 views
2

최근에 Python 용 Qt5의 새 버전으로 업데이트했습니다. 그렇게하면서 나는 일어난 주목할만한 변화의 일부에 따라 코드를 수정해야했습니다. 내가 만든이 코드 줄에 대한 통찰력을 얻고 싶었습니다. 함수에서 tuple 대신에 string을 얻는 문제를 푸는 더러운 방법처럼 느껴집니다. 나뿐만 아니라 Qt5으로 업데이트되고 있었다 저장소를 통해보고 후 filename = {str}'C:/.././.../format.csv'QtWidgets.QFileDialog.getOpenFileName은 튜플을 반환합니다.

하지 filename = <class 'tuple'>: ('C:/.././.../format.csv', '(*.csv)')

+0

폐기됩니다. 나는 Qt4를 사용하고'QFileDialog.getOpenFileName' 함수는 항상 문자열이 아닌 튜플을 반환했습니다. 함수가 리턴하는 것을 제어 할 수 없습니다. 파일 이름은 튜플의 첫 번째 요소이므로 어떻게 든 액세스해야합니다. 그것에 대해 더러운 무엇입니까? –

+0

마지막에 [0]을 배치하는 것이 프로그래밍 방식으로 정확한지 또는 실제로 더 나은 솔루션이 있는지 알고 싶습니다. 매개 변수처럼 함수 내부에 있어야합니다. – tisaconundrum

+0

@PaulCornelius 논의 된대로 API1과 API2가 변경 될 수 있습니다 (https://forum.qt.io/topic/757/pyside-qfiledialog-getopenfilename-returns-string-of-tuple-instead-of- just-string) 및 [여기] (https://srinikom.github.io/pyside-bz-archive/343.html)를 참조하십시오. –

답변

2

을 원하는

filename = QtWidgets.QFileDialog.getOpenFileName(None, "Open " + key + " Data File", '.', "(*.csv)")[0] 

(줄의 끝에서 [0] 참고) 나는 그들이 이런 선을 사용하는 것을 발견했다.

filename, _filter = QtWidgets.QFileDialog.getOpenFileName(None, "Open " + key + " Data File", '.', "(*.csv)") 

filename는 문자열이며, (* .csv)로이 QT4와 Qt5 차이가 왜 나는 이해하지 않는 _filter 변수

관련 문제