QListWidgetItem对象是不可散列的,是错误还是有原因?

问题描述 投票:0回答:1

我偶然发现了这个(显然是从更大的应用程序中摘录的:)]

import sys
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *

if __name__ == '__main__':

    app = QApplication(sys.argv)

    d = {}

    widget = QWidget()
    d[widget] = 'hashable'

    item = QListWidgetItem('abc')
    d[item] = 'unhashable'

如果运行此命令,则在最后一行上得到:

TypeError: unhashable type: 'PySide2.QtWidgets.QListWidgetItem'

据我所知,任何Qt对象都可以用作dict键,就像任何用户定义的类实例一样。

[我在Windows 7上运行PySide2 5.13.0,Python 3.6.4。在Ubuntu 18.04,Python 3.6.9,PySide 5.9.0a1上遇到相同的错误。

感谢任何提示。

[我偶然发现(显然是从更大的应用程序中提取的):从PySide2.QtCore导入*从PySide2.QtGui导入*从PySide2.QtWidgets导入*如果__name__ =='...

python pyside2
1个回答
0
投票

[QListWidgetItem(类似于QTableWidgetItem和QTreeWidgetItem)不可散列表,因为与行关联的QListWidgetItem可以在不通知的情况下进行更改,这与QObjects(例如QWidget,QPushButton等)不同,>

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

© www.soinside.com 2019 - 2024. All rights reserved.