You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Taipy中实现时间组件的自动更新?

解决Taipy UI中时间自动刷新的问题

你提到的taipy.core()是错误指引,Taipy中该模块(或方法)并非实现UI自动刷新所需,当前版本的Taipy UI开发也不需要依赖它。要实现时间自动刷新,可通过后台定时任务结合Taipy的state安全更新机制完成,以下是修改后的完整代码及关键说明:

修改后的代码

from taipy.gui import Gui, notify
from time import strftime, sleep
import threading

# 获取当前时间
def get_current_time():
    return strftime('%I:%M:%S %p')

# 存储当前时间的变量
current_time = get_current_time()

# 更新时间的核心函数
def update_time(state):
    state.current_time = get_current_time()
    # 自动刷新时建议关闭通知,避免频繁弹窗干扰
    # notify(state, "info", f"Time updated: {state.current_time}")

# 后台自动刷新线程函数
def auto_refresh_time(gui):
    while True:
        # 通过invoke_callback在主线程安全更新state,避免线程冲突
        gui.invoke_callback(update_time, None)
        sleep(1)

# 页面布局
page = """
### Current Time
<|{current_time}|text|class_name=time-display|>

<|Update Time|button|on_action=update_time|class_name=update-button|>
"""

gui = Gui(page=page)

# 应用初始化时启动自动刷新线程
def on_init(state):
    # 设置daemon=True,确保关闭应用时线程自动终止
    threading.Thread(target=auto_refresh_time, args=(state.gui,), daemon=True).start()

gui.run(debug=True, on_init=on_init)

关键实现要点

  • 线程安全的state更新:Taipy的state只能在主线程中修改,因此使用gui.invoke_callback()方法,让更新操作在主线程执行,避免线程安全问题。
  • 守护线程设置:通过daemon=True创建后台线程,保证关闭Taipy应用时线程会自动退出,不会残留进程。
  • 定时逻辑:用sleep(1)实现每秒刷新一次时间,可根据需求调整刷新间隔。

内容的提问来源于stack exchange,提问作者Pranith K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:33:28