我正在尝试使用coinmarketcap模块编写一个简单的比特币代码。
当我运行以下代码时,tkinter应用程序不会加载。没有错误。我想我称呼一切正确,但不确定还有什么毛病。
代码:
from coinmarketcap import Market
import time
from tkinter import *
from tkinter import ttk
import tkinter as tk
def btc_ticker():
while True:
coinmarketcap = Market()
btc_tick = coinmarketcap.ticker(1, convert ='GBP')
btc_price = btc_tick['data']['quotes']['GBP']['price']
#print(btc_price)
time.sleep(2)
btc_p.config(text = str(btc_price))
root.after(2, btc_ticker)
root = Tk()
root.configure(background='black')
btc_p = Label(root, font=('consolas', 20, 'bold'), text="0",width =10, bg='black', fg='white')
btc_p.grid(row=0, column =0)
btc_ticker()
root.mainloop()
我可以打印变量'btc_price',因此通过.configure方法将其分配给btc_p应该不成问题。
答案 0 :(得分:3)
您的代码存在的问题是,您在while True
之前有root.mainlop()
循环,无法执行。使用tkinter
处理持续更新的方法是使用root.after()
,您已实现但未正确实现。我删除了while
循环,并将root.after
留在了函数的最后,以执行mainloop()
。还要注意,root.after
的第一个参数是以毫秒为单位的时间,因此要让您的程序等待2秒钟,该参数应为2000。
from coinmarketcap import Market
from tkinter import *
def btc_ticker():
coinmarketcap = Market()
btc_tick = coinmarketcap.ticker(1, convert ='GBP')
btc_price = btc_tick['data']['quotes']['GBP']['price']
#print(btc_price)
btc_p.config(text = str(btc_price))
root.after(2000, btc_ticker)
root = Tk()
root.configure(background='black')
btc_p = Label(root, font=('consolas', 20, 'bold'), text="0",width =10, bg='black', fg='white')
btc_p.grid(row=0, column =0)
btc_ticker()
root.mainloop()