如何使用Tkinter实现每隔固定秒数更新从API获取的变量值
你可以通过Tkinter内置的after()方法实现非阻塞的定时更新,这是Tkinter场景下做定时UI更新的标准实现,不会卡住界面交互。
修改后的完整代码如下:
from tkinter import * import requests import json def getInfo(call): r = requests.get(call) return r.json() key = " " uuid = " " url = f"https://api.hypixel.net/player?key={key}&uuid={uuid}" root = Tk() root.title('Test Title') root.geometry("500x500") my_frame = Frame(root, width=500, height=200) my_frame.pack(pady=20, ipady=20, ipadx=20) my_label = Label(my_frame, text="加载中...", font=("Helvetica", 40), fg="#09d2f6") my_label.pack(pady=20) def update_uhc_wins(): # 拉取最新数据 try: data = getInfo(url) uhcWins = "UHC Wins: " + str(data["player"]["stats"]["Duels"]["uhc_duel_wins"]) # 更新标签文本 my_label.config(text=uhcWins) except Exception as e: # 接口请求失败时提示错误,避免崩溃 my_label.config(text="数据获取失败") # 60秒后再次调用自身,实现循环更新 root.after(60000, update_uhc_wins) # 程序启动时先调用一次加载初始数据 update_uhc_wins() root.mainloop()
主要改动说明:
- 新增了
update_uhc_wins()函数封装数据拉取和UI更新逻辑,末尾调用root.after(60000, update_uhc_wins)实现每隔60秒自动触发一次更新 - 增加了简单的异常捕获,避免API请求超时、参数错误等问题导致程序直接崩溃
- 初始标签先设为加载状态,第一次数据拉取完成后自动更新展示内容
内容的提问来源于stack exchange,提问作者Zeerky
相关产品推荐
相关产品推荐

