首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkinter不更新值

tkinter不更新值
EN

Stack Overflow用户
提问于 2017-10-03 23:26:42
回答 2查看 428关注 0票数 2

在下面的代码中,我使用tkinter显示两个值。第一个值更新得很好,但第二个值似乎没有更新。我对它们的结构都是一样的,所以我觉得应该更新一下。有没有什么原因不会呢?

代码语言:javascript
复制
#!/usr/bin/env python3
# imports
import requests
import time
from tkinter import *
import urllib.request, json

# variables
def get_coinbase_price():
    url = 'https://api.coinbase.com/v2/prices/USD/spot?'
    req = requests.get(url)
    data = req.json()
    bit = (data['data'][0]['amount'])
    thelabel.config(text = "1 BTC = %s USD" % bit)
    root.after(1000, get_coinbase_price)


def get_nicehash_stats():
    with urllib.request.urlopen(
            "https://api.nicehash.com/api?method=stats.provider.ex&addr=37sCnRwMW7w8V7Y4zyVZD5uCmc9N1kZ2Q8") as url:
        data = json.loads(url.read().decode())
    total = 0
    for val in data['result']['current']:
        total += float(val['data'][1])
    secondlabel.config(text="Nicehash stats = %s " % total)
    root.after(1000, get_nicehash_stats)



# gui workspace
root = Tk()
thelabel = Label(root, text="")
secondlabel = Label(root, text="")
thelabel.pack()
secondlabel.pack()
root.after(1000, get_coinbase_price)
root.after(1000, get_nicehash_stats)
root.mainloop()
EN

回答 2

Stack Overflow用户

发布于 2017-10-03 23:45:25

Nicehash API不喜欢您每秒轮询它。

我得到的回应是:

‘您的接口请求配额已被突破,请在28秒后重试。’

此响应的result JSON不包含“data”字段,因此将抛出异常,并且标签不会更新。此外,它在这一点上停止更新。您可能需要检查是否有结果字段:

代码语言:javascript
复制
if 'result' in data:
    for val in data['result']['current']:
        ...

或者,做一些异常处理。

票数 1
EN

Stack Overflow用户

发布于 2017-10-03 23:37:08

使用外部web连接测试任何东西都很困难。下面的简化代码可以工作并更新这两个标签。您可以使用它来重新构建您的web请求并显示它们。(将全局名称空间中的bits和total替换为您的web查询、函数内部或其他函数内部)

代码语言:javascript
复制
import time
from tkinter import *

bits = 12

def get_coinbase_price():
    global bits
    bits += 1
    thelabel.config(text = "1 BTC = %s USD" % bits)
    root.after(1000, get_coinbase_price)

total = 42

def get_nicehash_stats():
    global total
    total += 1
    secondlabel.config(text="Nicehash stats = %s " % total)
    root.after(1000, get_nicehash_stats)

# gui workspace
root = Tk()
thelabel = Label(root, text="")
secondlabel = Label(root, text="")
thelabel.grid(column=0, row=0)
secondlabel.grid(column=1, row=0)
root.after(1000, get_coinbase_price)
root.after(900, get_nicehash_stats)
root.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46548186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档