wxPython静态文本小部件“;“闪烁”;
我想做一个数字钟。其中一个问题是显示器会“闪烁”。换句话说,wx.StaticText小部件(self.ST)将在很短的时间内变为空白。我相信原因可能在于self.ST更新的方式(即,SetLabel())。有没有办法提供更平滑的过渡,以阻止闪烁 这是更新self.ST的功能:wxPython静态文本小部件“;“闪烁”;,python,wxpython,clock,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
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)
我想你可以用wx.Timer代替
请检查wxpython演示和发生的情况是,更新文本需要一次以上的监视器刷新,或者只是在与文本相关的不适当时间发生 实际上,
StaticText
并没有为您提供处理此问题所需的低级控制
您可以使用and或查看。修复闪烁的一种方法是在顶部容器中为小部件启用双缓冲。通常,这是通过在初始化器中调用
self.SetDoubleBuffered(True)
来完成的,例如在StaticText
类的Panel
容器中。这解决了问题。另一个答案(自己画画)是对这个问题的过度处理。您也可以直接在面板上调用SetDoubleBuffered
,而不必重写初始值设定项,例如self.statusReadoutPanel.SetDoubleBuffered(True)
。错误。正如@Oleksiy的回答所描述的,您只需在StaticText
的父对象上调用.SetDoubleBuffered(True)
。