2011-04-21 7 views
6

Siento que esto debería ser bastante simple, pero creo que me falta algo.PyGTK establece el icono de la ventana con la imagen stock

Así que quiero establecer el icono de una ventana con una de las imágenes de stock. He tratado:

windowIcon = gtk.image_new_form_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU) 
window.set_icon(windowIcon.get_pixbuf()) 

Python luego se queja de que:

File "./sample.py", line 44, in init
window.set_icon(windowIcon.get_pixbuf())
ValueError: image should be a GdkPixbuf or empty

trato de convertir el gtkImage a un GdkPixbuf porque cuando lo hice no pitón se quejó de que

TypeError: icon should be a GdkPixbuf or None

En el documentación pygtk dice:

If the storage type of the image is not either gtk.IMAGE_EMPTY or gtk.IMAGE_PIXBUF the ValueError exception will be raised.

Supongo que el tipo de almacenamiento de la imagen original es incorrecto. La pregunta es ¿cómo puedo solucionar esto?

Respuesta

4

Puede utilizar el método .render_icon() en cualquier GtkWidget para proporcionar un elemento de stock como icono.

windowicon = window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU) 
window.set_icon(windowicon) 
+0

Gracias por la respuesta! ¿Sabrías cómo establecería un ícono personalizado desde el sistema de archivos? –

2

El método render_icon() funciona como se indica anteriormente. Su código estaba teniendo problemas, porque el método get_pixbuf() devolvía None. Esto se debe a que la imagen no se creó a partir de un pixbuf y, por algún motivo, no la convertirá. Otra forma de obtener un pixbuf de una imagen es usar la función gtk.gdk.pixbuf_new_from_image().

Cuestiones relacionadas