Python Tkinter窗口后端编码
我试图每一次都显示比特币的价格。我想,由于api延迟,窗口看起来有滞后。我想在后端获得价格,并在前端显示。我该怎么办?我能举个例子吗?试试这个: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)
导入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()