2017-04-24 52 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