我正在尝试制作一个数字时钟。其中一个问题是显示器会“闪烁”。换句话说, wx.StaticText 小部件(在这种情况下为 self.ST )将在很短的时间内变为空白。我相信原因可能会发现它是 self.ST 更新的根源(即 SetLabel())。有没有办法提供更平滑的过渡,以阻止闪烁?
这是 self.ST 更新的功能:
def tick (self):
''' Continually updates the time. '''
TimeStr = '%I:%M %S %p'
DateStr = '%A, %B %d, %Y'
Time = time.strftime(TimeStr)
Date = time.strftime(DateStr)
self.TimeDate = Time + '\t\t' + Date
self.ST.SetLabel(Time)
wx.CallLater(1000, self.tick)
答案 0 :(得分:6)
修复闪烁的一种方法是在窗口小部件的顶部容器中启用双缓冲。通常,这可以通过在初始化程序中调用self.SetDoubleBuffered(True)
来完成,例如在Panel
类的StaticText
容器中调用。
答案 1 :(得分:1)
如果更新文本需要多次监视器刷新,或者只是在hsync的不适当时间内发生。
实际上,StaticText
并没有为您提供处理此问题所需的低级控制。
您可以使用BufferedDC
和DrawText
,或者查看LEDNumberCtrl
。
答案 2 :(得分:0)
我认为您可以使用wx.Timer 请查看wxpython演示和wx.Timer-class