PyGTK 使用标准图像设置窗口图标
我觉得这个问题应该挺简单的,但我可能漏掉了什么。
我想用一个系统自带的图标来设置窗口的图标。我试过这样做:
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: 图标应该是 GdkPixbuf 或者 None
在pygtk的文档里说:
如果图像的存储类型不是 gtk.IMAGE_EMPTY 或者 gtk.IMAGE_PIXBUF,就会抛出 ValueError 异常。
所以我猜测系统自带的图像存储类型不对。我的问题是,怎么解决这个问题呢?
2 个回答
2
render_icon()
这个方法的工作方式如上所述。你的代码出现问题是因为get_pixbuf()
这个方法返回了None
。这意味着图像并不是从pixbuf
创建的,而且出于某种原因,它无法进行转换。获取图像的pixbuf
的另一种方法是使用gtk.gdk.pixbuf_new_from_image()
这个函数。
4
你可以在任何GtkWidget上使用.render_icon()这个方法来提供一个标准的图标。
windowicon = window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowicon)