インタラクティブな画像シーケンス ビューアを作成しました。ちらつきがなければ、ビューアはほぼ完全に機能します。ダブルバッファリングについて少し読んだところ、少し混乱しました。プログラムのちらつきを取り除くために何をすべきかについての説明/コードが必要です。ほとんどの例では、サイズ変更の説明があります。一方、私はそれを必要としません。私のウィンドウはサイズが固定されています。では、ちらつきを修正するにはどのようなアプローチをとればよいでしょうか。
コード:
import wx
class main_frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, 'Main window', size=(1300, 750))
self.panel = wx.Panel(self, -1)
self.Centre()
#------------------------------------------------------------------------------
self.Frames = []
l=1
while l < 365:
self.Frames.append(wx.Image('images/{0}.png'.format(l), wx.BITMAP_TYPE_ANY))
print l
l+=1
self.slider = wx.Slider(self.panel, wx.ID_ANY, size = (500,-1))
self.slider.SetMax(356)
l = self.slider.GetValue()
self.image = wx.StaticBitmap(self.panel,-1,wx.BitmapFromImage(self.Frames[l]))
#------------------------------------------------------------------------------
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
self.sizer_v = wx.BoxSizer(wx.VERTICAL)
self.sizer_v.Add(self.image, 0, wx.CENTRE | wx.ALL, 5)
self.sizer_v.Add(self.slider, 0, wx.CENTRE | wx.ALL, 5)
self.sizer.Add(self.sizer_v, 1, wx.EXPAND | wx.ALL | wx.CENTER, 5)
self.panel.SetSizer(self.sizer)
self.Bind(wx.EVT_SLIDER, self.OnSlider, self.slider)
def OnSlider(self,e):
l = self.slider.GetValue()
self.image.SetBitmap(wx.BitmapFromImage(self.Frames[l]))
if __name__ == '__main__':
app = wx.App()
frame = main_frame().Show()
app.MainLoop()