Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python tkinter在后台运行函数时刷新了数据_Python_Tkinter - Fatal编程技术网

python tkinter在后台运行函数时刷新了数据

python tkinter在后台运行函数时刷新了数据,python,tkinter,Python,Tkinter,好吧,我很难解释,但是 我制作了这个程序,网络刮比特币 现在我为它建立了一个tkinter,我希望程序每次刮网时都能刷新标签 同时检查价格是否降到了我为它设定的价格 我似乎不明白如何让tkinter在检查价格是否从原始价格下降时自行更新,而不冻结程序 这是密码 from tkinter import* import tkinter as tk from PIL import Image,ImageTk from tkinter import ttk from bs4 import Beautif

好吧,我很难解释,但是 我制作了这个程序,网络刮比特币 现在我为它建立了一个tkinter,我希望程序每次刮网时都能刷新标签 同时检查价格是否降到了我为它设定的价格

我似乎不明白如何让tkinter在检查价格是否从原始价格下降时自行更新,而不冻结程序

这是密码

from tkinter import*
import tkinter as tk
from PIL import Image,ImageTk
from tkinter import ttk
from bs4 import BeautifulSoup
import requests
import smtplib
import re
from time import sleep
from secret import mail,password,hd,rmail


root=tk.Tk()
root.title("Bitcoin Tracker")
root.geometry("900x506")
x=IntVar()


C=Canvas(root, bg="grey", height=900, width=506)
filename=ImageTk.PhotoImage(Image.open(r"C:\Users\Home\Documents\studying\webscraperpython\wallpaper.jpg"))
background_label=Label(root, image=filename)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
C.pack()

label1=tk.Label(root,text="Time between each search: ",font="Helvetica 12 bold",fg="white",bg="#081E2C")
label1.place(x=200,y=10)
entry1=tk.Entry(root,textvariable=x)
entry1.place(x=420,y=10,height=23,width=200)

label2=tk.Label(root,text="",font="Helvetica 8 bold",fg="white",bg="#081E2C")
label2.place(x=0,y=100)

def scrape():
    wt=x.get()
    url="https://cointelegraph.com/bitcoin-price-index"
    headers= {hd}
    page=requests.get(url,headers=headers)

    soup=BeautifulSoup(page.content,"html.parser")

    total_price=soup.find("div",class_="summaryData").get_text()
    label2.config(text=total_price)    
    but2.place(x=400,y=150)
    label3=tk.Label(root,text="",font="Helvetica 8 bold",fg="white",bg="#081E2C")
    label3.place(x=400,y=350)
    url="https://cointelegraph.com/bitcoin-price-index"
    headers= {hd}
    page=requests.get(url,headers=headers)

    soup=BeautifulSoup(page.content,"html.parser")
    price=soup.find("span",class_="price-value").get_text()[1:].strip().replace(',','')
    non_decimal = re.compile(r'[^\d.]+')
    fprice=int(non_decimal.sub('', price))
    
def conti():
    wt=x.get()
    url="https://cointelegraph.com/bitcoin-price-index"
    headers= {hd}
    page=requests.get(url,headers=headers)

    soup=BeautifulSoup(page.content,"html.parser")
    price2=soup.find("span",class_="price-value").get_text()[1:].strip().replace(',','')
    non_decimal = re.compile(r'[^\d.]+')
    fprice2=int(non_decimal.sub('', price2))
    fprice3=float(fprice2*0.9)
    label2.config(text=("Current price is:",price2))
    root.after(wt*60,conti)
    
    def mail():
        if fprice2 <= fprice3:
            def alert_me(URL):
                server = smtplib.SMTP('smtp.gmail.com',587)
                                
                server.ehlo()
                server.starttls()
                server.ehlo()
                                
                server.login(mail,password)
                                
                subject = 'Price fell down by 10 percent for bitcoin'
                body = 'data from: '+URL
                msg = f"Subject:{subject}\n\n{body}"
                                
                server.sendmail(mail,rmail,msg)
                
                server.quit()
            alert_me(url)
            
        else:
            url="https://cointelegraph.com/bitcoin-price-index"
            headers= {hd}
            page=requests.get(url,headers=headers)

            soup=BeautifulSoup(page.content,"html.parser")
            price4=soup.find("span",class_="price-value").get_text()[1:].strip().replace(',','')
            print("current price is" ,price4 )
        root.after(1000,mail)

but=tk.Button(root,text="Initialize",font="Helvetica 12",anchor="center",justify=CENTER,command=scrape)
but.place(x=1,y=50,width=898)

but2=tk.Button(root,text="Continue?",font="Helvetica 12",anchor="center",justify=CENTER,command=conti)

root.mainloop()
从tkinter导入*
将tkinter作为tk导入
从PIL导入图像,ImageTk
从tkinter导入ttk
从bs4导入BeautifulSoup
导入请求
导入smtplib
进口稀土
从时间上导入睡眠
来自机密导入邮件、密码、hd、rmail
root=tk.tk()
root.title(“比特币跟踪器”)
根几何(“900x506”)
x=IntVar()
C=画布(根,bg=“灰色”,高度=900,宽度=506)
filename=ImageTk.PhotoImage(Image.open(r“C:\Users\Home\Documents\studing\webscraperpython\wallpaper.jpg”))
背景\标签=标签(根,图像=文件名)
背景标签位置(x=0,y=0,relwidth=1,relheight=1)
C.pack()
label1=tk.Label(root,text=“每次搜索之间的时间:”,font=“Helvetica 12 bold”,fg=“white”,bg=“#081E2C”)
标签1.位置(x=200,y=10)
entry1=tk.Entry(根,textvariable=x)
入口1.位置(x=420,y=10,高度=23,宽度=200)
label2=tk.Label(root,text=”“,font=“Helvetica 8 bold”,fg=“white”,bg=“#081E2C”)
标签2.位置(x=0,y=100)
def scrape():
wt=x.get()
url=”https://cointelegraph.com/bitcoin-price-index"
头文件={hd}
page=requests.get(url,headers=headers)
soup=BeautifulSoup(page.content,“html.parser”)
总价=汤。查找(“div”,class=“summaryData”)。获取文本()
label2.config(text=总价)
但是2.地点(x=400,y=150)
label3=tk.Label(root,text=”“,font=“Helvetica 8 bold”,fg=“white”,bg=“#081E2C”)
标签3.位置(x=400,y=350)
url=”https://cointelegraph.com/bitcoin-price-index"
头文件={hd}
page=requests.get(url,headers=headers)
soup=BeautifulSoup(page.content,“html.parser”)
price=soup.find(“span”,class=“price value”).get_text()[1:][.strip().replace(',','')
非十进制=重新编译(r'[^\d.]+')
fprice=int(非十进制子(“”,价格))
def conti():
wt=x.get()
url=”https://cointelegraph.com/bitcoin-price-index"
头文件={hd}
page=requests.get(url,headers=headers)
soup=BeautifulSoup(page.content,“html.parser”)
price2=soup.find(“span”,class=“price value”).get_text()[1:][.strip().replace(',','')
非十进制=重新编译(r'[^\d.]+')
fprice2=int(非十进制子(“”,价格2))
fprice3=浮动(fprice2*0.9)
label2.config(text=(“当前价格为:”,price2))
根。后(wt*60,续)
def mail():

如果fprice2尝试使用
root.after(100000,func)
在哪里找到root.after来反复运行函数?一次又一次地运行它意味着什么?是否有一个选项可以运行它直到它得到if条件?您已经在使用
after()
,有什么问题吗?您想重复哪个功能?请只包含那个函数而不是整个代码