wxPython StaticText小部件“闪烁”

时间:2011-03-14 02:56:14

标签: python wxpython clock

我正在尝试制作一个数字时钟。其中一个问题是显示器会“闪烁”。换句话说, 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)

3 个答案:

答案 0 :(得分:6)

修复闪烁的一种方法是在窗口小部件的顶部容器中启用双缓冲。通常,这可以通过在初始化程序中调用self.SetDoubleBuffered(True)来完成,例如在Panel类的StaticText容器中调用。

答案 1 :(得分:1)

如果更新文本需要多次监视器刷新,或者只是在hsync的不适当时间内发生。

实际上,StaticText并没有为您提供处理此问题所需的低级控制。

您可以使用BufferedDCDrawText,或者查看LEDNumberCtrl

答案 2 :(得分:0)

我认为您可以使用wx.Timer 请查看wxpython演示和wx.Timer-class