环境: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)
答案 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。