【问题标题】:Python/Tkinter: Update button from every secondPython/Tkinter:每秒更新按钮
【发布时间】:2014-06-25 22:59:41
【问题描述】:

我正在尝试启动一个线程(不了解线程是什么),它将每秒从不同的 python 文件调用一个函数,并将标签的 text 属性设置为它返回的 str 。结果将是一个标签,每秒钟都会更新以显示当前时间。我可以使用while True 循环,但这会阻止连续代码运行,包括Tkinter 的Tk.mainloop()。我在 SO 上看到了很多关于这个主题的问题,但到目前为止还没有任何解决方案。

什么python方法可以启动一个不断调用外部函数的进程?这应该在mainloop() 之前还是之后? mainloop() 循环到底在做什么? python 程序仍在继续,但不知何故 Tkinter 仍然能够检查事件?

运行 Python 3.4

【问题讨论】:

  • 虽然不是完全重复,但请查看this question,这绝对是 DUPLICATE-ESQUE
  • @AdamSmith 谢谢这个链接真的很有帮助。

标签: python tkinter python-multithreading


【解决方案1】:

我就是这样做的。好吧,不,我可能会将它包装到一个类中并实例化该类,但我真的只是从the linked question偷了整块布

import tkinter as tk
import customfunc

def run():
    root = tk.Tk()
    s_var = tk.StringVar()
    tk.Label(root, textvariable = s_var).pack()

    def update_time():
        s_var.set(customfunc.func())
        root.after(1000, update_time)

    update_time()
    root.mainloop()

if __name__ == "__main__":
    run()

【讨论】:

  • 你会把 mainloop() 放在哪里?
  • @joshsvoss 哎呀,我在 IDLE 中测试并忘记了嘿。已更新。
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
相关资源
最近更新 更多