Python无法取消计时器线程

时间:2015-11-14 00:24:48

标签: python

我正在尝试检测长按事件,如果按钮在计时器超时之前被释放则取消它,但是计时器永远不会被取消并在短按或长按时触发:

from threading import Thread

but_down = Timer(1.5,long_press)

if(but=='down'):
    but_down.start()

else:
    but_down.cancel()

def long_press():
    print('long press')

1 个答案:

答案 0 :(得分:2)

由于错误,您的代码没有为我运行,但一旦我修复了它,它运行良好:

1.5秒后输出长按

from threading import Timer
but = "down"
def long_press():
    print('long press')
but_down = Timer(1.5,long_press)
if(but=='down'):
    but_down.start()
else:
    but_down.cancel()

这不输出任何内容:

from threading import Timer
but = "up"
def long_press():
    print('long press')
but_down = Timer(1.5,long_press)
if(but=='down'):
    but_down.start()
else:
    but_down.cancel()

我不知道but是什么,但我的猜测是你的but=='down'测试可能是错误的原因。