2013-05-19 6 views
6

Umwelt: Python3Wie erstelle ich eine PixBuf Datei mit Gdk3?

Bibliotheken:

from gi.repository import Gtk, Gdk 
import cairo 

Ich möchte ein 'pixbuf aus der Datei' schaffen, sondern die Methode existiert nicht mehr in Gdk3.

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

Ergebnis in: Attribute: 'gi.repository.Gdk' Objekt hat kein Attribut 'pixbuf_new_from_file'

Weiß jemand, wie dies mit Gdk3 zu tun? nur Es scheint, dass Gdk3 diese Methoden unterstützen:

gdk_pixbuf_get_from_window 
gdk_pixbuf_get_from_surface 

aktualisieren

es Fand heraus, mich:

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

Antwort

14

Die Frage ist alt, aber vielleicht hilft es jemand:

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

Getestet auf GdkPixbuf._version == '2.0'

+1

Vielleicht war die Frage im Jahr 2013 alt, aber diese Antwort funktioniert perfekt in 2017 :) –

1

Ich weiß nicht viel über Python, aber im Allgemeinen sollten Sie nicht gtk Bild direkt zum Laden der Datei verwenden. Verwenden Sie stattdessen GdkPixbuf wegen der Fehlerbehandlung. Der Grund, dass es kein Attribut (in Python) "pixbuf new from file" gibt, liegt darin, dass für einen Großteil der GdkPixbuf-Behandlung immer noch (in C) gdk-pixbuf-2.0 verwendet wird. Warum haben sie nicht Port oder behalten es immer noch, ich habe keine Ahnung. In Python muss man statt GDK3 das Modul "gdk pixbuf" finden, wie Schcriher herausfand.