我觉得这应该是相当简单的,但我想我错过了一些东西。
所以我想用一个库存图像设置一个窗口的图标。我试过了:
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:图像应该是GdkPixbuf或空
我尝试将gtkImage转换为GdkPixbuf因为当我不这样做时,python抱怨
TypeError: icon应该是GdkPixbuf或None
pygtk文档中说:
如果映像的存储类型不是gtk。IMAGE_EMPTY或gtk。IMAGE_PIXBUF将引发ValueError异常。
所以我猜库存图像的存储类型是错误的。问题是我该如何解决这个问题?
您可以在任何GtkWidget上使用.render_icon()方法来提供一个股票项目作为图标。
windowicon = window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowicon)
render_icon()
方法的工作原理如上所述。您的代码有问题,因为get_pixbuf()
方法返回None
。这是因为映像不是从pixbuf
创建的,并且由于某种原因,它不会转换它。从图像中获取pixbuf
的另一种方法是使用gtk.gdk.pixbuf_new_from_image()
函数。