2017-04-20 11 views
2

私は最近、Qt5 for Pythonの新しいバージョンに更新しました。その際、私は、発生した注目すべき変更のいくつかに基づいて自分のコードを変更する必要がありました。私が作成したこのコード行についていくつかの洞察を得たいと思っていました。関数から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-ちょうど文字列)と[ここ](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変数

関連する問題