获取用户输入并在指定时间激活和取消激活功能

take user input and activate and de activate a function at specified times

好的,所以我正在为我的 pi 构建一个延时程序 运行。 我使用了一个 tkinter 条目小部件来计时,另一个条目小部件用于关闭时间,然后将它们保存到列表中。

我遇到的问题是想办法将这些变量与时钟进行比较,并在特定时间触发和停用事件。

基本上是为了参数,用户输入 07:00 表示打开,输入 13:00 表示关闭,然后在早上 7 点,相机功能变为活动状态,然后在 13:00 变为非活动状态。可以打开和关闭一个简单的布尔值来激活相机代码。

其他一切正常,但就是想不出将变量与时间进行比较的最佳方法,我尝试过的一切都惨遭失败。

请帮忙

================

更新:

所以首先感谢你们的回复,我已经制作了这个测试应用程序并且它现在可以正常工作

import time, Tkinter as tk
camera =  False
on_time= '17:48'
off_time= '07:55'

class App():
  def __init__(self):
    self.root = tk.Tk()
    self.root.geometry("50x50")
    self.label = tk.Label(text="")
    self.label.pack()
    self.checkTime()
    self.root.mainloop()
  def checkTime(self):
    time_now = time.strftime("%H:%M")
    self.root.after(1000, self.checkTime)
    if time_now >= on_time and time_now <= off_time:
      camera=True
      self.label.configure(text=camera)
      print camera
    else:
      camera=False
      self.label.configure(text=camera)
      print camera

app=App()

如果 on_time 小于 off_time 则效果很好,但反之则不然,所以如果我希望相机在 07:00 时开启并在 [= 时关闭37=] 可以正常工作,但如果我想让它在 17:00 时打开并在 07:00 时关闭,它就无法工作。

我只需要想出一个更好的方法来比较变量。我在正确的轨道上吗

谢谢

我能建议的最好的事情是有一个后台线程,它有一个无限循环检查时间并适当地设置布尔值。

Tkinter 小部件提供了一种 after 方法,可以安排在指定秒数后从主循环中执行任意函数。

由于您需要函数在指定的 时间 运行 ,您可以简单地使用 after 将函数安排到 运行每分钟,检查当前时间,并设置适当的标志。或者,您可以使代码更正确并使用 datetime 模块计算要等待的确切数量,使用该句点调用 after(),然后只需勾选复选框 on/off.