我觉得这应该很简单,但我想我错过了一些东西。
所以我想用其中一张图片设置一个窗口的图标。我试过了:
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异常。
所以我猜测库存图片的存储类型是错误的。问题是如何解决这个问题?
答案 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()
函数。