3 votes

Comment créer un Gtk Iconview avec un CellRendererText personnalisé ?

Je cherche à savoir comment créer en Python (2.7 ou plus) une GtkIconView qui possède un CellRendererText personnalisé pour l'élément texte de l'IconView.

La raison en est que je dois remplacer certaines propriétés pendant la création de la vue d'icône.

En cherchant un peu, j'ai trouvé cet exemple pour PyGtk pour les TreeViews - similaire mais j'ai besoin d'un exemple d'introspection pour un IconView.

J'ai consulté la documentation C++, mais je ne comprends pas vraiment comment affecter un cellrenderertext à l'IconView.

Encore une fois, j'ai trouvé de la documentation python pour créer un cellrenderer personnalisé pour un treeview.

Quelqu'un peut-il m'indiquer la bonne direction à suivre pour modifier l'exemple pour une IconView ?

2voto

Arnaud Meuret Points 821

La manière officielle de procéder est d'utiliser set_cell_data_func .

Cependant, dans le contexte d'une IconView, cela se fait différemment du cas TreeView (où vous passez simplement la fonction de rendu personnalisée à une instance TreeViewColumn).

J'étais aussi confus jusqu'à ce que je trouve cette pépite dans les liaisons Ruby de GTK3, où Kouhei Sutou démontre l'utilisation de l'interface GtkCellLayout pour configurer le rendu des cellules dans une IconView.

NOTA : Si vous aviez précédemment configuré vos colonnes en utilisant des setters tels que iconView.text_column = TEXT_IDX vous devez les supprimer une fois que votre moteur de rendu personnalisé est en place, sinon vous verrez des étiquettes de texte en double.

1voto

ptomato Points 24461

Gtk.IconView hérite de Gtk.CellLayout Vous pouvez donc utiliser les fonctions de mise en page des cellules pour remplacer le moteur de rendu de texte actuel. Quelque chose dans la veine de :

renderers = iconview.get_cells()
iconview.clear()
for r in renderers:
    if not isinstance(r, Gtk.TextRenderer):
        iconview.pack_start(r)
    else:
        iconview.pack_start(my_custom_renderer)

Je ne sais pas si ça marche, mais c'est comme ça que je m'y prendrais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X