【问题标题】:QtWidgets.QFileDialog.getOpenFileName returns a TupleQtWidgets.QFileDialog.getOpenFileName 返回一个元组
【发布时间】:2017-09-16 11:30:30
【问题描述】:

我最近更新到了 Qt5 for Python 的新版本。在这样做的过程中,我不得不根据已经发生的一些显着变化来更改我的代码。我想深入了解我创建的这行代码。这感觉像是解决从函数中获取string 而不是tuple 的问题的一种肮脏方式。 (注意行尾的[0]

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

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

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

【问题讨论】:

  • 我不明白为什么这是 Qt4 和 Qt5 之间的区别。我使用 Qt4 并且函数 QFileDialog.getOpenFileName 总是返回一个元组,而不是一个字符串。您无法控制函数返回的内容。文件名是元组的第一个元素,您必须以某种方式访问​​它。这有什么不好的?
  • 想知道在程序末尾放置 [0] 是否正确,或者实际上是否有更好的解决方案。就像我应该放在函数中的参数一样。
  • @PaulCornelius 正如herehere 所讨论的,这可能是API1 与API2 的变化。
  • 在使用 pyqt4topyqt5 将 PyQt4 代码移植到 PyQt5 后,我被此击中。我刚打开issue #17

标签: python pyqt qt5 pyqt5 qtwidgets


【解决方案1】:

在查看了一个也正在更新到 Qt5 的存储库之后;我发现他们使用了这样的一行。

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

filename 是一个字符串,并且 (*.csv) 在 _filter 变量中被丢弃

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2014-04-27
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多