Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython静态文本小部件“;“闪烁”;_Python_Wxpython_Clock - Fatal编程技术网

wxPython静态文本小部件“;“闪烁”;

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

我想做一个数字钟。其中一个问题是显示器会“闪烁”。换句话说,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)

我想你可以用wx.Timer代替
请检查wxpython演示和

发生的情况是,更新文本需要一次以上的监视器刷新,或者只是在与文本相关的不适当时间发生

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


您可以使用and或查看。

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

这解决了问题。另一个答案(自己画画)是对这个问题的过度处理。您也可以直接在面板上调用
SetDoubleBuffered
,而不必重写初始值设定项,例如
self.statusReadoutPanel.SetDoubleBuffered(True)
。错误。正如@Oleksiy的回答所描述的,您只需在
StaticText
的父对象上调用
.SetDoubleBuffered(True)