J'essaie d'ajouter une icône de stock Gtk à ma fenêtre. Voici le code:
#! /usr/bin/python
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='My Window Title')
self.icon = self.render_icon(Gtk.STOCK_FLOPPY, 1)
self.set_icon(self.icon)
self.connect('delete-event', Gtk.main_quit)
win = MyWindow()
win.show_all()
Gtk.main()
Selon cette page la taille de l'icône doit être l'une des constantes de taille d'icône Gtk mais l'achèvement du code Eclipse ne présente aucune des valeurs répertoriées. Si j'entre manuellement l'une de ces valeurs, je obtenir
AttributeError: l'objet 'gi.repository.Gtk' n'a pas d'attribut 'ICON_SIZE_SMALL_TOOLBAR'
Si je règle la taille de l'icône au littéral 1, le script fonctionne. Je suis sûr que cela doit faire quelque chose avec les versions de Gtk ou PyGtk, mais je ne peux pas comprendre ce que je fais mal. Merci d'avance et désolé pour la question des novices.
Le problème est que vous consultez la documentation PyGTK, mais que vous utilisez PyGI/GTK3 dans votre script.
La documentation sur gtk_widget_render_icon()
dit ce qui suit:
gtk_widget_render_icon est obsolète depuis la version 3.0 et ne doit pas être utilisé dans du code nouvellement écrit. Utilisez plutôt gtk_widget_render_icon_pixbuf ().
Ensuite, la documentation sur gtk_widget_render_icon_pixbuf()
dit ceci:
gtk_widget_render_icon_pixbuf est obsolète depuis la version 3.10 et ne doit pas être utilisé dans du code nouvellement écrit. Utilisez plutôt gtk_icon_theme_load_icon ().
Génial hein? Alors passons.
gtk_icon_theme_load_icon()
prend les arguments suivants:
Sachant cela, vous pouvez modifier votre ancienne ligne render_icon
comme suit:
icontheme = Gtk.IconTheme.get_default()
self.icon = icontheme.load_icon(Gtk.STOCK_FLOPPY, 128, 0)
Ce qui va chercher une image de 128x128 px. Vous voudrez peut-être changer les drapeaux si nécessaire, l'énumération est documentée ici . Cela peut être traduit en Python comme ceci:
GTK_ICON_LOOKUP_NO_SVG -> Gtk.IconLookupFlags.NO_SVG
GTK_ICON_LOOKUP_FORCE_SVG -> Gtk.IconLookupFlags.FORCE_SVG
GTK_ICON_LOOKUP_USE_BUILTIN -> Gtk.IconLookupFlags.USE_BUILTIN
# And so on...