2012-03-14 21 views
0

このコードはpython-forumからのもので、簡単なスライドショーで画像を見ることができます。それはイメージを作成するが、画面上に表示されないので、私は思っていません。私はコールバックのいくつかの並べ替えを実装する必要があるかもしれないと思うが、私の問題を解決するための正しい方法ですか?私がwhileループを取り除き、forを使うと、それは1つのイメージだけを表示し、残りは表示しません。シンプルなスライドショー(私のコードではありません)は動作しません

class SecondFrame(wx.Frame): 
    def __init__(self, parent, mysize): 
     gets correct path for images from working directory 
     wx.EVT_PAINT(self, self.onPaint) 

    def onPaint(self, event=None): 
     dc = wx.PaintDC(self) 
     while self.loops > 0: 
      self.loops -= 1 
      for self.ix, bmp in enumerate(self.image_list):  
       w, h = bmp.GetSize() 
       info = "Graphs" 
       self.SetTitle(info) 
       dc.DrawBitmap(bmp, 10, 10, True) 
       wx.MilliSleep(self.delay) 
       if self.delay > 200: 
        dc.Clear() 
+2

を私たちはフィギュアするつもりはありませんあなたのために何かがうまくいかない理由を調べてください。あなたはそれが動作していない理由を理解し、その特定のエラーを修正するために何をすべきかを問い合わせる必要があります – KevinDTimm

+0

どのような特定のエラーが発生していますか? –

+0

私はそれがなぜ機能していないのか知っていますが、私はそれを修正するために何ができるのかを知る必要があります。私はあなたに私に作業コードを与えるように求めていません。私は何のエラーも出ていませんが、何も表示していません。私はwhileループをコメントアウトし、ちょうどix、bmp ...をdc.DrawBitmapと一緒に使って、最初のイメージを示しました。 –

答えて

1

私はあなたがそのコードを得た場所を正確にわからないが、それはそれは、不完全な非実行可能な、非常に悪い全体的な(私見)コード化されて立っているよう。 (未テスト)このスニペットを試してみてください:

class SecondFrame(wx.Frame): 

    def __init__(self, parent, mysize): 

     # Whatever here 

     self.timer = wx.Timer(self, wx.ID_ANY) 

     self.SetTitle("Graphs") 

     self.Bind(wx.EVT_PAINT, self.OnPaint) 
     self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) 
     self.Bind(wx.EVT_TIMER, self.OnTimer) 

     self.timer.Start(self.delay) 


    def OnPaint(self, event): 

     dc = wx.BufferedPaintDC(self) 
     dc.SetBackground(wx.Brush(self.GetBackgroundColour())) 
     dc.Clear() 

     if self.loops <= 0: 
      return 

     bmp = self.image_list[self.loops]   
     w, h = bmp.GetSize() 

     dc.DrawBitmap(bmp, 10, 10, True) 
     wx.MilliSleep(self.delay) 


    def OnErase(self, event): 

     pass 


    def OnTimer(self, event): 

     self.loops -= 1 
     if self.loops <= 0: 
      return 

     self.Refresh() 

次回は、wxPythonのガイドラインに従って、完全に短い、実行可能なスタンドアロンのサンプルアプリケーションを投稿してください。

http://wiki.wxpython.org/MakingSampleApps

関連する問題