2017-01-18 14 views
0

私はGtk.Imageウィジェットをウィンドウ内に持っています。 それは Python GTK Image、Change Image何度も何度も何度も何度も画像が得られない

def dinChangeBg(self,_Timing): 
     tm.sleep(int(_Timing)) 

##  Verifica se a janela ainda existe 
     if not(self.Runing): 
      thread.exit() 

     bg = "image/background"+str(self.bgIndex)+".jpg" 

     if not (os.path.isfile(bg)): 
      print(bg,"bg inesistente") 
      self.bgIndex = 1 

      bg = "image/background"+str(self.bgIndex)+".jpg" 

     if(os.path.isfile(bg)): 
      print("new bac", bg) 

      pbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(bg, self.Window.get_size()[0],self.Window.get_size()[1], preserve_aspect_ratio=False) 
      self.image.clear() 
      self.image.set_from_pixbuf(pbuf) 
      self.bgIndex += 1 


     self.dinChangeBg(int(_Timing)) 
下回っ機能のスレッドで実行スレッドの呼び出しは次のとおりです。

_thread.start_new_thread(dinChangeBg,(60,)) 

よりも変化がない画像と画像desappears時間後、 印刷イメージを示し続けます場所が存在する場合はその場所。

誰かがエラーの考えを持っていますか?

答えて

1

他のスレッドからGTK +関数を呼び出すことはできません。あなたのスレッドはGTK +スレッドにと言う必要があります。はpixbufを作成しますイメージを変更します。あなたはGLib.idle_add()と伝えます。または、これが2番目のスレッドを完全に排除できるほど単純なアニメーションの場合は、GLib.timeout_add()を使用してタイムアウト時にコードを実行します。

+0

、影で開きますように行動し、 をバスショーの何を示していないされていない、Gtk.Windowをそれを試した後、私はGLibのスレッドを開始し、GLib.idle_add(dinChangeBg、60)、 はperfetly thathトレッドを起動していますかウィンドウは表示されません – user7331387

+0

私は完全なコードを見る必要があります。 – andlabs

+0

私はスレッドでwhileループとtime.sleepを持っており、プログラムが壊れてしまいます。私はスレッドを変更し、今それは大丈夫動作します。ありがとう – user7331387

関連する問題