常量Tkinter窗口更新

时间:2016-11-14 11:35:41

标签: python tkinter

作为第一个项目,我决定构建一个应用程序,向我展示当前的石油价格,这样我就不必一直查看外汇图表。

这个应用程序的问题是“更新”循环只打印油价每3秒,所以我知道这个循环是不断执行的,但它不仅不会更新窗口中的文本,而且还会崩溃它,而贝壳打印油的价格。

我尝试使用多处理模块,但没有区别。

def window():
    root = Tk()
    screen_width  = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    mylabel = Label( root, text = "" )
    mylabel.pack()

def update():
    while True:
        global string_price
        request = requests.get( "http://www.biznesradar.pl/notowania/BRENT-OIL-ROPA-BRENT#1d_lin_lin" )
        content = request.content
        soup = BeautifulSoup( content, "html.parser" )
        element = soup.find( "span", { "class": "q_ch_act" } )
        string_price = ( element.text.strip() )
        print( string_price )
        mylabel.configure( text = str( string_price ) )

        time.sleep( 3 )

root.after( 400, update )
mainloop()

1 个答案:

答案 0 :(得分:2)

.after方法,已经同时从while Truesleep执行了您想要的操作。同时删除sleepwhile,并在内部添加另一个after以便持续致电。

def custom_update():
    global string_price
    request = requests.get("http://www.biznesradar.pl/notowania/BRENT-OIL-ROPA-BRENT#1d_lin_lin")
    content = request.content
    soup = BeautifulSoup(content, "html.parser")
    element = soup.find("span", {"class": "q_ch_act"})
    string_price = (element.text.strip())
    print(string_price)
    mylabel.configure(text=str(string_price))
    root.after(3000, custom_update) #notice it calls itself after every 3 seconds

custom_update() #since you want to check right after opening no need to call after here as Bryan commented