PyGTK设置了窗口图标与股票图像

时间:2011-04-21 15:56:01

标签: python gtk icons pygtk gdkpixbuf

我觉得这应该很简单,但我想我错过了一些东西。

所以我想用其中一张图片设置一个窗口的图标。我试过了:

windowIcon = gtk.image_new_form_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowIcon.get_pixbuf())
然后Python抱怨说:

  

文件“./sample.py”,第44行, init
  window.set_icon(windowIcon.get_pixbuf())
  ValueError:image应为GdkPixbuf或为空

我尝试将gtkImage转换为GdkPixbuf,因为当我没有python抱怨时

  

TypeError:icon应为GdkPixbuf或None

在pygtk文档中,它说:

  

如果图像的存储类型不是gtk.IMAGE_EMPTY或gtk.IMAGE_PIXBUF,则会引发ValueError异常。

所以我猜测库存图片的存储类型是错误的。问题是如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您可以在任何GtkWidget上使用.render_icon()方法来提供库存项目作为图标。

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

答案 1 :(得分:2)

render_icon()方法如上所述。您的代码遇到了问题,因为get_pixbuf()方法正在返回None。这是因为图像不是从pixbuf创建的,并且由于某种原因,它不会转换它。从图像中获取pixbuf的另一种方法是使用gtk.gdk.pixbuf_new_from_image()函数。