python - 每 x 秒更新从 api 提取的变量
问题描述
我要做的是从 API 中获取一个数字,并使用 tkinter 在屏幕上每 60 秒更新一次该数字。我可以很好地通过 API 进行编号,只是在弄清楚如何更新它时遇到了麻烦。
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}"
data = getInfo(url)
uhcWins = "UHC Wins: " + str(data["player"]["stats"]["Duels"]["uhc_duel_wins"])
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=uhcWins, font=("Helvetica", 40), fg="#09d2f6")
my_label.pack(pady=20)
root.mainloop()
解决方案
您可以简单地使用root.after
函数。以下是如何实现:
root.after(<time in millisecond>,<function>)
对于您的代码,您可以这样做:
from tkinter import *
import requests
import json
def getInfo():
data = requests.get(url).json()
my_label.config(text="UHC Wins: " + str(data["player"]["stats"]["Duels"]["uhc_duel_wins"]))
root.after(60000,getInfo)
#In every 60 second it will call the get info function and change the context of my_label
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, font=("Helvetica", 40), fg="#09d2f6")
my_label.pack(pady=20)
key = " "
uuid = " "
url = f"https://api.hypixel.net/player?key={key}&uuid={uuid}"
data = getInfo()
root.mainloop()
推荐阅读
- ms-access - MS Access:导航表单子表单中的查询条件
- racket - 一个数字的递归,如果它在 Racket 中按升序排列而不使用列表
- mysql - MySQL获取每个加入多列的组的最大值
- uwp - 为什么我的发行版 .exe 在启动 UWP 应用程序时失败?
- python - PyQt 从不同目录导入 QML 主题
- javascript - Jquery - 触发在 div 上单击 mouseenter 并在单击任何其他按钮时取消单击
- django - 让 Django、VUE、CORS 和 CSRF 与真实世界的示例一起工作
- python-3.x - 尝试将所有内容附加到文件中,最后一次迭代是唯一一个填充文本文档
- android - 在通用 onClick 方法中调用 .getBackground()
- c - 警告:传递 'pushPost' 的参数 1 使指针在我的中缀中没有强制转换 [-Wint-conversion] 的整数到后缀程序