Как отмечено в комментарии, ошибка, которую вы получаете, является частью ошибки , которая является остатками PySide.
Я думаю, что у вас есть проблема XY и вы хотите проверить, есть ли элемент с предопределенным текстом.Если это так, то нет необходимости реализовывать оператор ==
, но использовать метод findItems () :
from PySide2 import QtCore, QtGui
if __name__ == "__main__":
import sys
md = QtGui.QStandardItemModel()
for text in ("Hello", "Stack", "Overflow"):
md.appendRow(QtGui.QStandardItem(text))
words = ("Hello", "World")
for word in words:
if md.findItems(word, flags=QtCore.Qt.MatchExactly, column=0):
print(f"{word} exists")
else:
print(f"{word} not exists")
Или использовать метод match () если вы хотите найти другую роль:
from PySide2 import QtCore, QtGui
FooRole = QtCore.Qt.UserRole + 1000
if __name__ == "__main__":
import sys
md = QtGui.QStandardItemModel()
for i, text in enumerate(("Hello", "Stack", "Overflow")):
it = QtGui.QStandardItem(str(i))
it.setData(text, FooRole)
md.appendRow(it)
words = ("Hello", "World")
for word in words:
if md.match(
md.index(0, 0), FooRole, word, hits=1, flags=QtCore.Qt.MatchExactly
):
print(f"{word} exists")
else:
print(f"{word} not exists")