【问题标题】:Reliable way to make a delay in Python3 code在 Python3 代码中延迟的可靠方法
【发布时间】:2016-06-19 11:23:43
【问题描述】:

我有一个 python 3 程序,需要延迟 20 秒我试过 time.sleep(20) 但这会导致很多问题,比如我使用 tkinter 时程序停止在 Windows 上响应,有没有人没有制作延迟或示例代码的另一种方法有没有办法用循环来做到这一点?

【问题讨论】:

标签: windows python-3.x tkinter delay


【解决方案1】:

Tkinter 提供了一种使用通用方法after 来安排函数在未来运行的方法。例如,要在 20 秒内调用 do_something,您可以这样做:

root = tk.Tk()
...
root.after(20000, do_something)

【讨论】:

  • 与 Tkinter 合作时,这比我给他的链接中提到的更有效和合适。
  • 如果您使用 tkinter 元素那就​​太好了,但就我而言,我使用的是函数
  • @JJLongOne:你的帖子特别提到了 tkinter。
  • @JJLongOne,不要在主线程中休眠、等待或做 CPU 密集型处理。它需要响应以处理其事件循环和与平台窗口管理器的接口。 after 等函数允许与工具包的事件循环配合使用。它不仅适用于使用 Tk 元素。
  • @JJLongOne 非常清楚,.after 调用中的do_something 可以是any 函数。 tk 不知道也不关心 do_something 做了什么。它只是调用它。一个限制是do_something 应该快速执行,以便 tk 可以处理其他事件。如有必要,do_something 应该只做部分工作,然后安排自己再次被调用。在 SO 中搜索 [tkinter] root.after 将引导您找到许多示例。
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2019-02-21
  • 2021-10-05
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多