经过一段时间的gui用户不活动后做一些事情tkinter

时间:2016-07-26 22:04:54

标签: python-3.x tkinter

做某事的一般方法是什么?在tkinter中用户不活动一段时间之后?在我的情况下,做某事'将转到已经实例化的开始屏幕(tk.frame)。

2 个答案:

答案 0 :(得分:2)

我能想到的最简单的解决方案看起来像这样:

  1. 启动计时器
  2. 在任何按键设置或任何按钮单击时设置绑定以重置计时器
  3. 如果计时器熄灭,请执行某些操作
  4. 创建一个在用户处于非活动状态时调用的函数:

    def user_is_inactive():
        <your code here>
    

    创建一个重置计时器的功能。

    我们希望能够从事件或直接调用它,因此event参数必须是可选的:

    timer = None
    def reset_timer(event=None):
        global timer
        # cancel the previous event
        if timer is not None:
            root.after_cancel(timer)
    
        # create new timer
        timer = root.after(10000, user_is_inactive)
    

    设置绑定以重置计时器

    使用bind_all意味着每个小部件都可以处理这些事件:

    root.bind_all('<Any-KeyPress>', reset_timer)
    root.bind_all('<Any-ButtonPress>', reset_timer)
    

    启动计时器

    在拨打mainloop之前,这是一个好时机。

    reset_timer()
    root.mainloop()
    

答案 1 :(得分:0)

我承认我没有这方面的经验,但也许某种看门狗定时器可以工作?计时器将计入您想要的时间,但是只要元素被激活,它就会重置计数器。这个概念在微控制器中使用了很多,但我不确定如何将它应用于python。