2013-05-19 16 views
6

環境:のpython3Gdk3でファイルからPixBufを作成する方法は?

図書館:

from gi.repository import Gtk, Gdk 
import cairo 

私は 'ファイルからPIXBUF' を作成したいが方法が長くGdk3に存在しません。 Gdk3でこれを行う方法を誰を知っています 'gi.repository.Gdk' オブジェクトが属性 'pixbuf_new_from_file'

を持っていません:はAttributeError:中

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

結果? は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で) "filebuf new from file"という属性がない理由は、GdkPixbufの処理の多くが(C言語で)gdk-pixbuf-2.0を使用しているからです。なぜ彼らはそれを移植していない、またはそれを保持していない、私は分かりません。 Schcriherが指摘したように、PythonではGDK3を使う代わりに "gdk pixbuf"モジュールを見つけなければなりません。

関連する問題