wxPythonはクロスプラットフォームで、PythonのGUIライブラリーです。Tcl/Tk や Tkinter には伝統がありますが、あまりかっこ良くないので、wxPyhtonを使ってみます。
wx.DCを使ってアニメーションをするときのひな形。#begin drawingと#end drawingの間で、dc.Draw...()などとします。wx.Timerで一定確率で描写します。チラツキは起こらないはずです。色が変えてあるところをいじればカスタマイズできるようになっています。
以下、ソースコード。
import wx class myWindow(wx.Window): def __init__(self, parent, ID): wx.Window.__init__(self, parent, ID, style=wx.NO_FULL_REPAINT_ON_RESIZE) self.SetBackgroundColour("WHITE") self.InitBuffer() self.Bind(wx.EVT_PAINT, self.OnPaint) self.createTimer() def InitBuffer(self): size = self.GetClientSize() self.buffer = wx.EmptyBitmap(max(1,size.width), max(1,size.height)) dc = wx.BufferedDC(None, self.buffer) dc.SetBackground(wx.Brush(self.GetBackgroundColour())) dc.Clear() def createTimer(self): self.timer = wx.Timer(self) self.timer.Start(100) self.Bind(wx.EVT_TIMER, self.onTimer, self.timer) def onTimer(self,event): self.InitBuffer() dc = wx.BufferedDC(wx.ClientDC(self), self.buffer) dc.BeginDrawing() # begin drawing dc.SetPen(wx.pen("black",3,wx.SOLID)) dc.DrawText("message",20,20) dc.SetPen(wx.Pen("black", 2, wx.SOLID)) dc.DrawLine(0,self.counter*4,640,self.counter*4) # end drawing dc.EndDrawing() def OnPaint(self, event): dc = wx.BufferedPaintDC(self, self.buffer) class myFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "myFrame", size=(800,600), style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) mywindow = myWindow(self, -1) if __name__ == "__main__": app = wx.PySimpleApp() frame = myFrame(None) frame.Show(True) app.MainLoop()