Python QListWidgetItem对象是不可修复的,它是一个bug或存在';原因是什么?

Python QListWidgetItem对象是不可修复的,它是一个bug或存在';原因是什么?,python,pyside2,Python,Pyside2,我偶然发现了这一点(显然,这是一个更大应用程序的摘录): 如果您运行此操作,在最后一行您将获得: TypeError: unhashable type: 'PySide2.QtWidgets.QListWidgetItem' 据我所知,任何Qt对象都可以用作dict键,就像任何用户定义的类实例一样 我正在Windows7上运行PySide2 5.13.0和Python3.6.4。我在Ubuntu18.04、Python3.6.9、PySide 5.9.0a1上也遇到了同样的错误 感谢您的提示。

我偶然发现了这一点(显然,这是一个更大应用程序的摘录):

如果您运行此操作,在最后一行您将获得:

TypeError: unhashable type: 'PySide2.QtWidgets.QListWidgetItem'
据我所知,任何Qt对象都可以用作dict键,就像任何用户定义的类实例一样

我正在Windows7上运行PySide2 5.13.0和Python3.6.4。我在Ubuntu18.04、Python3.6.9、PySide 5.9.0a1上也遇到了同样的错误

感谢您的提示。

QListWidgetItem(类似于QTableWidgetItem和QTreeWidgetItem)不是哈希表,因为与行关联的QListWidgetItem可以在没有通知的情况下更改,而不像QWidget、QPushButton等QObject

如果您的目标是将信息与QListWidgetItem关联,则可以使用
setData()
data()
方法

导入系统 从PySide2.QtCore导入Qt 从PySide2.QtWidgets导入QApplication、QListWidget、QListWidgetItem、QWidget 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) w=QListWidget() 对于范围(10)内的i: it=QListWidgetItem(“abc-{}”.format(i)) setData(Qt.UserRole,“data-{}”.format(i)) w、 附加项(it) _currentItemChanged()上的定义: 当前=w.currentItem() 打印(当前.data(Qt.UserRole)) w、 currentItemChanged.connect(在\u currentItemChanged上) w、 show() sys.exit(app.exec_())
我不认为这是一个bug,似乎您希望QListWidgetItem是可哈希的,但它似乎不是为此而设计的。为什么需要QListWidgetItem作为字典的键?因为我希望将信息关联到字典中的一组QListWidgetItem,并在通过QListView.currentItem()通过插槽o获取特定QListWidgetItem时轻松检索这些信息。我已经用QPushButtons和许多其他Qt对象实现了这一点。您正在将pythonic解决方案应用到一个不使用python设计基础的框架中,因此许多python解决方案无法在Qt中工作,Qt是一个可以自行工作的库,因此,正如我在回答中所建议的,它可以为您想要的东西提供替代方案。
TypeError: unhashable type: 'PySide2.QtWidgets.QListWidgetItem'