root1 = tkinter.Tk() root1.withdraw() root1.geometry('800x200') if now2 in ti:#当当天时间是计划开始时间的列表里 root1.after(1000, tishi)#启动弹框信息 def createTimer():#因为第一次启动需要间隔时间,所以以上代码是手工第一次检查当前时间是否是计划开始时间 t = threading.Timer(10, repeat)#threading.Timer为定时方法(间隔时间(以秒为单位),所要执行的函数) t.start() def repeat():#重复上面的操作,获取当前时间与计划开始时间的列表进行匹配 createTimer() now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') now1 = datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S') now2 = str(now1).split(' ')[0] print(now2) if now2 in ti: root1.after(1000, tishi) createTimer() root1.mainloop()怎样停止 threading.timer
时间: 2024-03-18 09:42:11 浏览: 53
python例程1.exec动态生成控件.7z
要停止 `threading.Timer`,可以使用 `cancel()` 方法来取消定时器。在你的代码中,需要在 `repeat()` 函数中添加一个判断条件,以便在需要时可以取消定时器。例如:
```python
def repeat():
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
now1 = datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')
now2 = str(now1).split(' ')[0]
print(now2)
if now2 in ti:
root1.after(1000, tishi)
else:
t.cancel() # 如果不是计划开始时间,取消定时器
```
在这个修改后的代码中,如果当前时间不在计划开始时间列表中,定时器将被取消。这将防止定时器无限期地运行下去。
阅读全文