如何使用Gdk3从文件创建PixBuf?

时间:2013-05-19 17:36:03

标签: python gtk3 gdkpixbuf

环境:Python3

库:

from gi.repository import Gtk, Gdk
import cairo

我想创建一个'pixbuf from file',但该方法在Gdk3中不再存在。

pb = Gdk.pixbuf_new_from_file('sunshine.png')
Gdk.cairo_set_source_pixbuf(cr, pb, 0, 0)

结果:AttributeError:'gi.repository.Gdk'对象没有属性'pixbuf_new_from_file'

有人知道如何使用Gdk3吗? 似乎Gdk3仅支持这些方法:

gdk_pixbuf_get_from_window
gdk_pixbuf_get_from_surface

更新

自己找到它:

image = Gtk.Image()
image.set_from_file('sunshine.png')
pixbuf = image.get_pixbuf()
Gdk.cairo_set_source_pixbuf(cr, pixbuf, 10, 10)

2 个答案:

答案 0 :(得分:15)

问题是陈旧的,但也许对某人有所帮助:

from gi.repository import GdkPixbuf
pixbuf = GdkPixbuf.Pixbuf.new_from_file('sunshine.png')

在GdkPixbuf._version上测试=='2.0'

答案 1 :(得分:1)

我对python知之甚少,但一般情况下你不应该直接使用gtk image来加载文件。由于错误处理,请使用GdkPixbuf。没有属性(在python中)“pixbuf new from file”的原因是因为对于GdkPixbuf的大部分处理,仍然使用(在C中)gdk-pixbuf-2.0。为什么他们没有移动或仍然保留它,我不知道。在python中,你必须找到“gdk pixbuf”模块,而不是像Schcriher所指出的那样使用GDK3。