2017-11-13 4 views
1

in meinem Programm würde Ich mag ein Bild ändern, indem Sie auf eine Schaltfläche, aber ich kann die FunktionWie kann ich das Bild eines GtkImage ändern?

class TestGdkPixbuf(Gtk.Window): 
    Cover= "image.png" 
    Cover2= "image2.png" 

    def __init__(self): 
     Gtk.Window.__init__(self, title="TestGdkPixbuf") 

     mainLayout = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) 


     self.image = GdkPixbuf.Pixbuf.new_from_file_at_size(self.Cover, 250, 250) 
     image_renderer = Gtk.Image.new_from_pixbuf(self.image) 

     button = Gtk.Button(label='Change') 
     button.connect('clicked', self.editPixbuf) 

     mainLayout.pack_start(image_renderer, True, True, 0) 
     mainLayout.pack_start(button, True, True, 0) 

     self.add(mainLayout) 

    def editPixbuf(self, button): 
     self.image = GdkPixbuf.Pixbuf.new_from_file_at_size(self.Cover2, 250, 250) 
     print(self.Cover2) 

Vielen Dank für Ihre Hilfe nicht finden

Antwort

1

Wenn Sie die Gtk.Image erstellt haben , image_renderer, lieferten Sie einen Pixbuf, self.image.

Dann auf Ihrem Knopf Rückruf, Sie haben ein Bild in einen Pixbuf geladen, aber nicht aktualisiert image_renderer mit dem neuen Pixbuf. Sie sollten Gtk.Image set_from_pixbuf verwenden.

Versuchen:

class TestGdkPixbuf(Gtk.Window): 
    Cover= "image.png" 
    Cover2= "image2.png" 

    def __init__(self): 
     Gtk.Window.__init__(self, title="TestGdkPixbuf") 

     mainLayout = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) 


     self.image = GdkPixbuf.Pixbuf.new_from_file_at_size(self.Cover, 250, 250) 
     self.image_renderer = Gtk.Image.new_from_pixbuf(self.image) 

     button = Gtk.Button(label='Change') 
     button.connect('clicked', self.editPixbuf) 

     mainLayout.pack_start(image_renderer, True, True, 0) 
     mainLayout.pack_start(button, True, True, 0) 

     self.add(mainLayout) 

    def editPixbuf(self, button): 
     self.image = GdkPixbuf.Pixbuf.new_from_file_at_size(self.Cover2, 250, 250) 
     self.image_renderer.set_from_pixbuf (self.image) 
     print(self.Cover2) 
Verwandte Themen