Ошибка TypeError: 'NoneType' object is not iterable
означает, что ваш запрос не возвращает строк.
Это хотя бы частично из-за этого кода:
sql = "SELECT * FROM color WHERE name=? OR color=?"
values = (self, name_text.get(), color_text.get())
cur.execute(sql, values)
Это вызвало использование self
для параметра name
, и результат name_text.get()
будет связан с атрибутом color
. Результат color_text.get()
игнорируется.
Вам необходимо удалить self
- ваш sql использует два параметра, поэтому вам нужно отправить ему два параметра.
Появляется другая проблема: будь то, что вы перебираете результаты search
, но search
ничего не возвращает. Вам нужно добавить оператор return
в функцию search
.