Python Tkinter窗口后端编码

Python Tkinter窗口后端编码,python,tkinter,Python,Tkinter,我试图每一次都显示比特币的价格。我想,由于api延迟,窗口看起来有滞后。我想在后端获得价格,并在前端显示。我该怎么办?我能举个例子吗?试试这个: 导入pyupbit 从tkinter进口* 从线程导入线程 类主(框架): 定义初始化(自,窗口): 超级()。\uuuu初始化\uuuu(窗口) self.window=window self.price=0 self.price\u label=label(self.window,text='hello') 自身价格标签位置(x=20,y=20)

我试图每一次都显示比特币的价格。我想,由于api延迟,窗口看起来有滞后。我想在后端获得价格,并在前端显示。我该怎么办?我能举个例子吗?

试试这个:

导入pyupbit
从tkinter进口*
从线程导入线程
类主(框架):
定义初始化(自,窗口):
超级()。\uuuu初始化\uuuu(窗口)
self.window=window
self.price=0
self.price\u label=label(self.window,text='hello')
自身价格标签位置(x=20,y=20)
线程=线程(目标=self.get\u price\u循环,守护进程=True)
thread.start()
self.show_price()
def显示价格(自身):
self.price\u label.configure(text=self.price)
自我展示后(30,自我展示价格)
def get_price_循环(自):
尽管如此:
self.price=pyupbit.get_当前价格('KRW-BTC')
#在这里,您可以使用'time.sleep(0.1)'添加一点延迟`
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=Tk()
根几何体('300x300')
主(根)
root.mainloop()

我有两个循环。tkinter循环显示
self.price
变量中的任何内容,而另一个线程中的
while
循环使用
self.price=pyupbit更新该值。获取当前价格('KRW-BTC')

否,您正在尝试每100毫秒显示一次比特币价格。尝试放置
pyupbit.get\u当前价格('KRW-BTC'))
在另一个线程中是否有任何线程示例?如果问题是提取过程中的延迟,那么使用线程将不会起作用。如果获取价格需要300毫秒,则更新速度不可能超过300毫秒。当然,您不能在辅助线程中更新UI。您还需要在
self.price.configure(text=price)
之后放置
after
方法!thanks@Robinshim确保在另一个线程中没有任何tkinter内容。Tcl将崩溃,您在调试它时会感到头疼:DCan我可以问您为什么吗?@Robinshim Tcl不喜欢从一个线程使用tkinter对象,而该线程不是您创建
tk.tk()
的线程。这是tcl的一个怪癖。不使用它,我如何解决我的问题?
import pyupbit
from tkinter import *

class Main(Frame):
    def __init__(self, window):
        Frame.__init__(self, window)

        self.window = window

        self.price = Label(self.window, text='hello')
        self.price.place(x=20,y=20)

        self.get_price()

    def get_price(self):
        self.after(100, self.get_price)

        price = pyupbit.get_current_price('KRW-BTC')
        self.price.configure(text=price)

if __name__ == '__main__':
    root = Tk()
    root.geometry('300x300')
    Main(root)
    root.mainloop()