如何使用 QTreeWidget 在 <list> 中的 <item>
Posted
技术标签:
【中文标题】如何使用 QTreeWidget 在 <list> 中的 <item>【英文标题】:How to use for <item> in <list> with QTreeWidget 【发布时间】:2020-01-28 23:10:48 【问题描述】:我有一个 QTreeWidgetItem 对象列表,当我在 <list>
测试中使用 <item>
时,我得到了 NotImplementedError。有谁知道我必须在 QTreeWidgetItem 上实现什么才能使其正常工作?我尝试重载哈希运算符,但没有解决它 - 我得到了同样的错误。
from PySide2 import QtWidgets
_list = [QtWidgets.QTreeWidgetItem() for _idx in range(3)]
print _list[1] in _list
这是错误信息:
# Error: operator not implemented.
# Traceback (most recent call last):
# File "<maya console>", line 2, in <module>
# NotImplementedError: operator not implemented. #
【问题讨论】:
这能回答你的问题吗? Compare objects and search in list 如重复答案中所述:这是一个 pyside2 错误,但通常没有必要,如果您正在寻找特定项目,则必须使用 QTreeWidget 中的findItems 方法跨度> 嗯,这对我来说真的不起作用,我需要查找当前是否选择了触发回调的项目 - 但现在我知道这是一个错误,我可以找到解决方法,我可以使用 QTreeWidgetItem .被选中。谢谢你的信息:) 你意识到,你有一个XY problem,你的问题应该是:如何知道一个项目是否被选中?为此,没有必要使用“in”运算符。 不是真的 - 我知道如何找到一个项目是否被选中。问这个问题对我了解我的代码为什么不起作用很有用;如果 PySide2 中没有那个错误,我应该能够使用我的解决方案。 【参考方案1】:就像在 cmets 中提到的那样,这是一个错误。以下是使用 id()
的解决方法,您可以使用它来代替:
from PySide2 import QtWidgets
_list = [QtWidgets.QTreeWidgetItem() for _idx in range(3)]
removed_item = _list.pop(1)
_ids = [id(item) for item in _list]
print id(removed_item) in (_ids) # Returns False
【讨论】:
以上是关于如何使用 QTreeWidget 在 <list> 中的 <item>的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QStyledItemDelegate 在 QTreeWidget 中拥有不同高度的 QTreeWidgetItems?