Как настроить текст, отображаемый в `Gtk.TreeViewColumn`? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть размер файла в байтах, хранящийся в Gtk.ListStore, и я хочу, чтобы они отображались в удобочитаемом формате Gtk.CellRendererText.Читая документацию, кажется, Gtk.TreeViewColumn.set_cell_data_func() - это способ достичь этого.Настройка работает без ошибок, но как только будет отображена ячейка, после нескольких неудачных утверждений произойдет сбой всего приложения.

Вот код, который я использую:

self._builder.get_object("ContentList.Size").set_cell_data_func(
    Gtk.CellRendererText(),
    self.render_formatted_size
)

И это то, что напечатано на stderr :

/usr/lib/python3.7/site-packages/gi/overrides/Gio.py:44: Warning: g_object_freeze_notify: assertion 'G_IS_OBJECT (object)' failed
  return Gio.Application.run(self, *args, **kwargs)
/usr/lib/python3.7/site-packages/gi/overrides/Gio.py:44: Warning: g_object_get: assertion 'G_IS_OBJECT (object)' failed
  return Gio.Application.run(self, *args, **kwargs)
/usr/lib/python3.7/site-packages/gi/overrides/Gio.py:44: Warning: g_object_set: assertion 'G_IS_OBJECT (object)' failed
  return Gio.Application.run(self, *args, **kwargs)
/usr/lib/python3.7/site-packages/gi/overrides/Gio.py:44: Warning: g_object_is_floating: assertion 'G_IS_OBJECT (object)' failed
  return Gio.Application.run(self, *args, **kwargs)
/usr/lib/python3.7/site-packages/gi/overrides/Gio.py:44: Warning: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
  return Gio.Application.run(self, *args, **kwargs)

Содержание self.render_formatted_size здесь не должно иметь значения.Кажется, что он никогда не выполняется.

PS: Добавление дополнительных строковых столбцов в модель не вариант, так как я хочу иметь возможность изменять единицы отображения (SI, IEC) в любое время.

1 Ответ

1 голос
/ 15 апреля 2019

Вы передаете только что созданный CellRenderer, а не существующий.Нечто подобное должно быть сделано вместо:

rend = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("title", rend)
column.set_cell_data_func (rend, cell_fn, None);
tree.append_column(column)
...