作为第一个项目,我决定构建一个应用程序,向我展示当前的石油价格,这样我就不必一直查看外汇图表。
这个应用程序的问题是“更新”循环只打印油价每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()
答案 0 :(得分:2)
.after
方法,已经同时从while True
和sleep
执行了您想要的操作。同时删除sleep
和while
,并在内部添加另一个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