【问题标题】:How do I iterate a QStringList in Python?如何在 Python 中迭代 QStringList?
【发布时间】:2019-01-29 01:56:33
【问题描述】:

PyQt5中使用getOpenFileNames命令选择多个文件时,它返回的列表是QStringList的形式。但是,我发现没有可行的方法来迭代此列表并单独选择每个文件名。

我已经在互联网的每一寸土地上寻找解决方案,但我很难相信 QStringList 不允许迭代。

有没有办法迭代QStringList 中的每个字符串?

谢谢!

【问题讨论】:

  • 我已经看到了,但它并没有解决我的问题。
  • 你能发布完整的代码来创建QStringList吗?它不在PyQt5.Qt ...
  • getOpenFileNames 返回一个 QStringList,它确实是 PyQt5 框架的一部分。 doc.qt.io/qt-5/qstringlist.html
  • @IAmTheKDENoob getOpenFileNames 可以返回 QStringList 的唯一方法是,如果您将 pyqt4 与 python2 一起使用。对于带有 python2 或 python3 的 pyqt5,QStringListQString根本不再直接支持 - 因此它们将始终自动转换为它们的 python 等效项(即 list 和 @ 987654334@,分别)。如果您看到不同的行为,则说明您的代码有其他问题,或者您使用的是旧的/有缺陷的 pyqt 版本。 (PS:你确实意识到getOpenFileNames 返回一个列表和一个字符串的二元组,对吧?)

标签: python pyqt5 qstringlist


【解决方案1】:

这是你要找的吗?

for i in range(len(somelist)):
    print(somelist[i])

【讨论】:

  • 不适用于 QStringList。 “TypeError: count() 只接受一个参数(给定 0)”
  • @IAmTheKDENoob 你现在可以试试吗?
  • 如果就这么简单,我上周就已经完成了。但是 FileDialog.getOpenFileNames 在选择多个文件时只返回一个大块。普通的迭代器不起作用。内置的python方法也不会。 QStringList 在它自己的类中。
  • 根据pyqt.sourceforge.net/Docs/PyQt4/qstringlist.htmlQStringList 实现了__len____getitem__。你能澄清一下到底出了什么问题吗?
  • 使用这些命令中的任何一个都无法遍历使用 getOpenFileNames 方法选择的每个文件。你试过了吗?使用 getOpenFileNames 选择多个文件会在 QStringList 中返回一个大的 QString 块。长度不适用于此方法,因为它将始终返回 1。文件名的 QString 块和文件过滤器信息。
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 2013-11-03
  • 2020-09-29
  • 2021-01-05
  • 2023-03-15
  • 2012-01-02
相关资源
最近更新 更多