首页 > 解决方案 > TypeError:不可散列的类型:'ListWidgetItem'

问题描述

我有一些在 python2.7 环境中运行良好的 PySide2 代码......但是在 python3.7 中运行时,我收到此错误:

Traceback (most recent call last):
  File "<Python Editor Contents>", line 17, in <module>
    widget.resized.connect(item.resize_to_widget_size)
TypeError: unhashable type: 'ListWidgetItem'

这是代码的简化示例:

from PySide2 import QtWidgets, QtCore

class ListWidgetItem(QtWidgets.QListWidgetItem):
    def __init__(self):
        super(ListWidgetItem, self).__init__()

    def resize_to_widget_size(self, width, height):
        self.setSizeHint(QtCore.QSize(width, height))

class WidgetExample(QtWidgets.QWidget):
    resized = QtCore.Signal(int, int)
    def __init__(self):
        super(WidgetExample, self).__init__()

item = ListWidgetItem()
widget = WidgetExample()
widget.resized.connect(item.resize_to_widget_size)

我知道 QListWidgetItem 不可散列......但我不太明白为什么在 python3 中有散列尝试。

有人可以向我解释一下,并可能提供解决方案。

标签: pythonpysidepyside2

解决方案


推荐阅读