在我的应用程序中,我想让用户通过按住箭头键滚动图像。毫不奇怪,对于较大的图像,电脑无法跟上,并建立一个潜在的大缓冲区,在密钥发布后继续进行处理。
这些都不是意料之外的,我的正常答案只是检查事件中的时间戳与当前时间,并丢弃任何超过(例如).2秒的事件。这样积压就永远不会太大。
但是tkinter使用了一些事件的随机时基,因此与time.time()进行比较是没有意义的,而且我找不到能够掌握tkinter自己的时钟的函数。我确信它在那里,它只是大部分pythonised tkinter文档有点naff,搜索时间或时钟也没有帮助。
def plotprev(self,p):
if time.time() - p.time > .2:
return
可悲的是,这个测试总是返回true,在哪里可以找到tkinter的伪时钟? 相比之下,任何其他方法都会很复杂。
答案 0 :(得分:0)
def checklag(self,p):
if self.lasteventtime is None: #assume first event arrives with no significant delay
self.lasteventtime = p.time
self.lasteventrealtime = time.time()
self.lagok=0
self.lagfail=0
return True
ptdiff = (p.time-self.lasteventtime) / 1000
rtdiff = time.time() - self.lasteventrealtime
lag = rtdiff-ptdiff
if lag < .3:
self.lagok += 1
if self.lagok %20 == 0:
print("lagy? OK: %d, fail: %d" %(self.lagok, self.lagfail))
return True
else:
self.lagfail += 1
return False