2017-04-24 6 views
0

こんにちは私は、ボタンをクリックするだけで画像を表示する必要があります。次のコードを書きましたが、私にはlasイメージのみを表示しています...何が間違っていますか?Python3の画像をシーケンスで表示

#!/usr/bin/python3 
import os 
import time 
import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk, Gdk 


class GridWindow(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title="NEOTECH") 
     self.grid = Gtk.Grid() 
     self.add(self.grid) 

     self.btnStartTest=Gtk.Button("Iniciar Prueba") 
     self.btnStartTest.connect("clicked",self.StartTest) 

     self.image = Gtk.Image() 
     self.image.set_from_file("logo-NeoTech.png") 

     self.grid.add(self.btnStartTest) 
     self.grid.attach(self.image,0,1,1,1) 


    def StartTest(self,widget): 
     self.image.set_from_file("gato3.jpg") 
     time.sleep(2) 
     self.image.set_from_file("gato4.jpg") 
     print("fin") 


win = GridWindow() 
win.set_position(Gtk.WindowPosition.CENTER) 
win.set_default_size(1000,480) 
win.set_type_hint(Gdk.WindowTypeHint.MENU) 
win.connect("delete-event", Gtk.main_quit) 
win.show_all() 
Gtk.main() 

答えて

1

GUIプログラムでtime.sleep()を使用しないでください。 GUIメインループをブロックし、応答しなくなります。代わりに

使用GLib.timeout_add

from gi.repository import Gtk, Gdk, GLib 

class GridWindow(Gtk.Window): 
    def StartTest(self,widget): 
     self.image.set_from_file("gato3.jpg") 
     GLib.timeout_add(2000, self.show_last_image) 

    def show_last_image(self): 
     self.image.set_from_file("gato4.jpg") 
     print("fin") 
+0

おかげでたくさんRawingが、これは優れた作品!!!!!!!!!!! – user39269