2017-04-20 455 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可变