【问题标题】:PyGTK set icon of window with stock imagePyGTK 设置带有 库存图片的窗口图标
【发布时间】:2023-06-29 16:03:01
【问题描述】:

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

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

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 异常。

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

【问题讨论】:

    标签: python gtk icons pygtk gdkpixbuf


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答!您知道我将如何从文件系统设置自定义图标吗?
    【解决方案2】:

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

    【讨论】:

      最近更新 更多