2013-05-19 8 views
6

環境:Python3如何使用Gdk3從文件創建PixBuf?

庫:

from gi.repository import Gtk, Gdk 
import cairo 

我想創建一個 '從文件的pixbuf',但該方法不不再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) 

回答

14

的問題是舊的,但也許它可以幫助別人:

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

在GdkPixbuf._version上測試=='2.0'

+1

也許這個問題在2013年很老了,但是這個答案在2017年完美運作:) –

1

我對python不太瞭解,但總的來說你不應該直接使用gtk鏡像加載文件。因爲錯誤處理,請使用GdkPixbuf。沒有屬性的原因(在Python中)「pixbuf new from file」,是因爲對於大部分GdkPixbuf處理,仍然使用(在C中)gdk-pixbuf-2.0。爲什麼他們沒有移植或仍然保持它,我不知道。正如Schcriher指出的那樣,在python中,您必須找到「gdk pixbuf」模塊,而不是使用GDK3。