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

时间:2015-03-16 18:44:46

标签: python-2.7 tkinter

是的,所以我正在建立一个时间推移程序来运行我的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开始并在17:00关闭,那将会正常工作但如果我想要它来在17:00和07:00关闭它不会工作。

我只需要找出比较变量的更好方法。我是在正确的轨道上

感谢

2 个答案:

答案 0 :(得分:2)

Tkinter小部件提供了一个after方法,用于安排在指定的秒数后从主循环执行任意函数。

由于您需要在指定的时间运行您的函数,因此您只需使用after来安排函数每分钟运行一次,检查当前时间并设置适当的标志。或者,您可以使代码更正确,并使用datetime模块计算等待的确切数量,在该时间段内调用after(),然后只需打开/关闭复选框。

答案 1 :(得分:1)

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