【问题标题】:How can I break the sleep when I pressed a button on tkinter当我按下 tkinter 上的按钮时如何打破睡眠
【发布时间】:2018-04-18 18:51:16
【问题描述】:

我有一个sensor() 方法,我一直使用root.after(200, sensor) 来运行它。我还有一个函数set_speed(),可以设置电机的速度。当传感器检测到某些东西时,它会运行

set_speed(100)
sleep(3)
set_speed(0)

现在我需要添加另一个按钮,当传感器检测到某些东西时,我们可以按下按钮打破睡眠(但传感器仍在运行)。

看来我需要再添加一个root.after创建另一个线程什么的,我尝试了一段时间但无法完成。

【问题讨论】:

  • 你不能在 tkinter 中使用sleep。用另一个root.after 替换它,如果你想取消它,使用root.after_cancel。如果您想要更具体的答案,您必须向我们展示minimal reproducible example
  • 你不能。 Sleep 就像它所说的那样,它让你的整个程序进入睡眠状态(意思是:它不能响应鼠标和键盘事件)
  • 谢谢,所以我需要使用两个root.after(),一个用于set_speed(100),另一个用于第一个之后,这样我就可以表示睡眠的行为了,对吧?

标签: python tkinter


【解决方案1】:

问题解决了。我们可以简单地使用另一个 after 来构建另一个线程,该线程将在 3 秒后运行并将速度设置为 0。

    set_speed(100)
    root.after(3000, stop)   

.....

def stop():
    set_speed(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2018-06-30
    相关资源
    最近更新 更多