2017-04-20 83 views
2

我最近更新了Python的Qt5的新版本。這樣做,我一直不得不根據已經發生的一些顯着變化來改變我的代碼。我想了解一下我創建的這行代碼。這感覺就像是解決從函數中獲取string而不是tuple的問題的一種骯髒的方式。 (注意[0]在該行的結尾)QtWidgets.QFileDialog.getOpenFileName返回一個Tuple

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

我想filename = {str}'C:/.././.../format.csv'

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

+0

丟棄我不明白這是爲什麼的Qt4和QT5之間的差異。我使用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

通過,目前正在更新,以QT5以及一個倉庫細算;我發現他們用這樣的一條線。

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

filename是一個字符串和(* .CSV)獲取_filter可變