6

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

所以我想用其中一张库存图像设置一个窗口的图标。我努力了:

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 should be a GdkPixbuf or empty

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

TypeError: icon 应该是 GdkPixbuf 或 None

在 pygtk 文档中它说:

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

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

4

2 回答 2

4

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

windowicon = window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowicon)
于 2011-04-22T08:03:09.293 回答
2

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

于 2016-01-19T12:47:21.670 回答