Поиск GtkDropDown не работает с простыми строкамиPython

Программы на Python
Anonymous
Поиск GtkDropDown не работает с простыми строками

Сообщение Anonymous »

Я пытаюсь создать GtkDropDown с панелью поиска для сортировки списка часовых поясов.

В документации Gtk4 указано:

GtkDropDown знает, как получать строки из элементов в GtkStringList

это модель, которую я изначально пытался использовать.

Об этом также говорится в описании метода set_enable_search()

Обратите внимание, что GtkDropDown:expression должен быть установлен для работы поиска.

Я искал на GitLab и GitHub другие проекты и то, как они это делают, но все методы, которые я нашел, похоже, не работают для меня, выдавая ошибки в Python или напрямую игнорирование ввода текста.
После нескольких попыток вот фрагмент последней попытки, которая выдает ValueError: последовательность строк имеет неправильное количество элементов в model.append(Timezone(_(tz)))

Код: Выделить всё

# unrelated code above
model = Gtk.ListStore(GObject.GType(Timezone))
for tz in pytz.common_timezones:
model.append(Timezone(_(tz)))
dropdown = Gtk.DropDown()
dropdown.set_model(model)
dropdown.set_enable_search(True)
dropdown.set_expression(Gtk.PropertyExpression(GObject.GType(Timezone), None, "name"))
self.action_row.add_suffix(dropdown) # parent defined above
# unrelated code below
Класс Timezone:

Код: Выделить всё

from gi.repository import GObject

class Timezone(GObject.GObject):
def __init__(self, name):
__gtype_name__ = "Timezone"
self.name = name

def __len__(self):
return len(self.name)

def __str__(self):
return self.name
Я застрял. Чего мне не хватает, чтобы все заработало?

Вернуться в «Python»