wxPython的StaticText控件闪烁问题
我正在尝试制作一个数字时钟。其中一个问题是显示会“闪烁”。换句话说,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
我觉得你可以试试用 wx.Timer。可以去看看 wxpython 的示例,还有这个 wx.Timer 类 的介绍。
9
解决闪烁问题的一种方法是在你的小部件的顶层容器中启用双缓冲。通常,你可以在初始化的时候,比如在你的 StaticText
类的 Panel
容器里,调用 self.SetDoubleBuffered(True)
来实现这个设置。
1
发生的情况是,更新文本需要多个显示器刷新,或者更新的时机不太合适,这和水平同步(hsync)有关。
目前,StaticText
并不能让你进行足够底层的控制来处理这个问题。
你可以尝试使用BufferedDC
和DrawText
,或者看看LEDNumberCtrl
。