2017-11-13 14 views
1

나는 버튼을 클릭하여 이미지를 변경하려면하지만 난 GtkImage가 표시하는 이미지를 변경하는 방법은 무엇입니까? 내 프로그램에서

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) 

당신이 Gtk.Image을 만든 당신의 도움이

답변

1

주셔서 대단히 감사 기능을 찾을 수 없습니다 image_renderer, pixbuf를 제공했습니다 (self.image).

버튼 콜백에서 이미지를 pixbuf에로드했지만 image_renderer을 새 pixbuf로 업데이트하지 않았습니다. Gtk.Image set_from_pixbuf을 사용해야합니다.

시도 :

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)