Python Requests Veri Yenileme

Merhaba;
Pythonda request ile internetten alınmış bir verinin programı tekrar başlatmadan nasıl yenileyebilirim
Kur verisi sürekli değiştiği için…

Bunun için whiledöngüsüne alıp dakikada bir çekebilirsiniz.

Dediğinizi birçok farklı şekilde yaptım ama 2. ekran gelmiyor.

import time
import subprocess
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from tkinter import *
from tkinter import messagebox
def girisYap():
    user=isim.get()
    pasw=sifre.get()
    if user=="1.kişi" and pasw=="123123": 
        basarili()
        pencere2()
    elif user=="2.kişi" and pasw=="123123": 
        basarili()
        pencere2()
    elif user=="3.kişi" and pasw=="123123": 
        basarili()
        pencere2()
    elif user=="4.kişi" and pasw=="123123": 
        basarili()
        pencere2()
    elif user=="4.kişi" and pasw=="123123": 
        basarili()
        pencere2()
    elif user=="" or pasw=="":
        tanımsız()
    else:
        yanlış()
def sil2(ıskonto,fıyat):
    ıskonto.delete(0,'end')
    fıyat.delete(0,'end')
def kurtık():
    chromedriver="C:/hesisk/chromedriver.exe"
    driver=webdriver.Chrome(chromedriver)
    driver.get("https://altin.in")
def sil():
    isim.delete(0,'end')
    sifre.delete(0,'end')
def hesapla(fıyat,ıskonto,sonucGoster,var):
    x=float(fıyat.get())
    z=ıskonto.get()
    d=var.get()
    kd=int(d)*int(x)
    q=int(kd)-int(kd)*(int(z)*(1/100))
    sonuç=(int(q)+(int(q)*18/100))
    sonucGoster.config(text="Fiyat :"+str(sonuç)+"₺",fg="black",bg="light grey",font="None 12 bold")
def basarili():
    pencere.destroy()
def tanımsız():
    isimSor.config(text=" Kullanıcı Adı* :",fg="red",bg="light grey",font="None 11")
    sifreSor.config(text=" Parola* :",fg="red",bg="light grey",font="None 11")
    durum.config(text="(*) alanlar boş bırakılamaz!",fg="red",bg="light grey",font="None 9")
    sil()
def yanlış():
    isimSor.config(text=" Kullanıcı Adı* :",fg="black",bg="light grey",font="None 11")
    sifreSor.config(text=" Parola* :",fg="black",bg="light grey",font="None 11") 
    durum.config(text="Bilgiler yanlış!",fg="red",bg="light grey",font="None 9")
    sil()
def pencere2():
    kururl="https://altin.in"
    r=requests.get(kururl)

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

    euro_veri=soup.find_all("b",{"id":"sabitEuro"})
    dolar_veri=soup.find_all("b",{"id":"sabitDolar"})
    döngü1=1
    while döngü1==1:
        euro=euro_veri[0].text
        dolar=dolar_veri[0].text
        time.sleep(60)
        döngü1=1
    
    pencere2=Tk()
    pencere2.title("▬▬▬▬▬▬▬▬ İskHes ▬▬▬▬▬▬▬▬")
    pencere2.config(bg="light grey") 
    pencere2.geometry("420x300+530+110")
    
    note1=Label(pencere2)
    note1.config(text="⚠ Not ⚠",bg="light grey",fg="red",font="None 9 bold")
    note1.grid(row=6,column=1)

    note2=Label(pencere2)
    note2.config(text="Ondalıklı sayılarda virgül(,) yerine nokta(.) kullanınız",bg="light grey",fg="black",font="None 7")
    note2.grid(row=7,column=1)

    marka2=Label(pencere2)
    marka2.config(text="***",bg="light grey",fg="black",font="Times 7")
    marka2.grid(row=0,column=1)

    fiyatSor=Label(pencere2)
    fiyatSor.config(text="Ürün fiyatı :",fg="black",bg="light grey",font="None 11")
    fiyatSor.grid(row=1,column=0,sticky=E)

    fıyat=Entry(pencere2)
    fıyat.config(bg="white",width="39")
    fıyat.grid(row=1,column=1)

    iskontoSor=Label(pencere2)
    iskontoSor.config(text="İskonto :",fg="black",bg="light grey",font="None 11")
    iskontoSor.grid(row=2,column=0,sticky=E)

    ıskonto=Entry(pencere2)
    ıskonto.config(bg="white",width="39")
    ıskonto.grid(row=2,column=1)

    hesapM=Button(pencere2)
    hesapM.config(text="Hesap Makinesi",fg="black",bg="light grey",font="None 8",width="12",command=calcilator)
    hesapM.grid(row=5,column=1,sticky=E)

    hesisk=Button(pencere2)
    hesisk.config(text="Hesapla",fg="black",bg="light grey",font="None 8",width="13")
    hesisk.grid(row=5,column=2)

    temizle=Button(pencere2)
    temizle.config(text="Yenile",fg="black",bg="light grey",font="None 8",width="11")
    temizle.grid(row=5,column=1)
    temizle["command"]=lambda: sil2(ıskonto,fıyat)

    bitir=Button(pencere2)
    bitir.config(text="Bitir",fg="red",bg="light grey",activebackground="red",font="None 11",command=quit)
    bitir.grid(row=10,column=1)



    var=IntVar()
    seçenek_tl=Radiobutton(pencere2,text="TL",bg="light grey",value=1,variable=var)
    seçenek_tl.grid(row=1,column=2,sticky=W)
    seçenek_tl["command"]=lambda: hesapla(fıyat,ıskonto,sonucGoster,var)
    seçenek_euro=Radiobutton(pencere2,text="EURO",bg="light grey",value=euro,variable=var)
    seçenek_euro.grid(row=2,column=2,sticky=W)
    seçenek_euro["command"]=lambda: hesapla(fıyat,ıskonto,sonucGoster,var)
    seçenek_dolar=Radiobutton(pencere2,text="DOLAR",bg="light grey",value=dolar,variable=var)
    seçenek_dolar.grid(row=3,column=2,sticky=W)
    seçenek_dolar["command"]=lambda: hesapla(fıyat,ıskonto,sonucGoster,var)

    sonucGoster=Label(pencere2)
    sonucGoster.config(text="Henüz hesaplanmadı",fg="black",bg="light grey",font="None 12")
    sonucGoster.grid(row=4,column=1)
    hesisk["command"]=lambda: hesapla(fıyat,ıskonto,sonucGoster,var)

    euroGöster=Label(pencere2)
    euroGöster.config(text="Euro :"+str(euro),fg="black",bg="light grey",font="None 11 bold")
    euroGöster.grid(row=3,column=1,sticky=W)

    dolarGöster=Label(pencere2)
    dolarGöster.config(text="Dolar :"+str(dolar),fg="black",bg="light grey",font="None 11 bold")
    dolarGöster.grid(row=3,column=1,sticky=E)

    araçlar=Menu(pencere2)
    araç=Menu(araçlar,tearoff=0)
    araç.add_command(label="Hesap Makinesi",command=calcilator)
    araç.add_command(label="Döviz(altarnatif)",command=kurtık)
    araç.add_separator()
    araç.add_command(label="Çıkış",command=quit)
    araçlar.add_cascade(label="Araçlar",menu=araç)
    pencere2.config(menu=araçlar)

    mainloop()
def calcilator():
    subprocess.Popen("C:\\Windows\\System32\\calc.exe")

pencere=Tk()
pencere.title("▬▬▬▬▬ Giriş Ekranı ▬▬▬▬▬")
pencere.config(bg="light grey")
pencere.geometry("370x150+650+110")

marka=Label(pencere)
marka.config(text="***",bg="light grey",fg="black",font="Times 7")
marka.grid(row=0,column=1)

isimSor=Label(pencere)
isimSor.config(text=" Kullanıcı Adı* :",fg="black",bg="light grey",font="None 11")
isimSor.grid(row=1,column=0)

isim=Entry(pencere)
isim.config(bg="white",width="30")
isim.grid(row=1,column=1)

sifreSor=Label(pencere)
sifreSor.config(text="  Parola* : ",fg="black",bg="light grey",font="None 11")
sifreSor.grid(row=2,column=0)

sifre=Entry(pencere)
sifre.config(bg="white",width="30",show="•")
sifre.grid(row=2,column=1)

durum=Label(pencere)
durum.config(text="Henüz giriş yapılmadı",fg="black",bg="light grey",font="None 11")
durum.grid(row=3,column=1)

giriş=Button(pencere)
giriş.config(text="Giriş",fg="black",bg="light grey",font="None 11",command=girisYap)
giriş.grid(row=4,column=1)


mainloop()

pencere fonksiyonundaki while döngüsünün bitmemesinden dolayı ikinci ekran gelmiyor bence.

nasıl yapacağız o zaman

PyQt5 için QTimer vardı belki tkinter için de böyle bir modül vardır

ya da belki qtimer ı tikenter içinde de kullanabilirsin

bilmiyorum ama denerim sağol

Bence en kolayı bir tane kur yenile butonu oluşturup altta yazdığım kurYenile fonksiyonu commanda ekleyin.

def kurYenile():
    kururl="https://altin.in"
    r=requests.get(kururl)

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

    euro_veri=soup.find_all("b",{"id":"sabitEuro"})
    dolar_veri=soup.find_all("b",{"id":"sabitDolar"})
    euro=euro_veri[0].text
    dolar=dolar_veri[0].text
def pencere2():
    kurYenile()

    pencere2=Tk()
    pencere2.title("▬▬▬▬▬▬▬▬ İskHes ▬▬▬▬▬▬▬▬")
    pencere2.config(bg="light grey") 
    pencere2.geometry("420x300+530+110")

anlaşılır olmuştur umarım

euro ve dolarda hata veriyor

def kurYenile():
    global dolar,euro
    kururl="https://altin.in"
    r=requests.get(kururl)

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

    euro_veri=soup.find_all("b",{"id":"sabitEuro"})
    dolar_veri=soup.find_all("b",{"id":"sabitDolar"})
    euro=euro_veri[0].text
    dolar=dolar_veri[0].text

ne kadar sağlıklı bir kod bilmiyorum ama çözüm olabileceğini düşündüm.

eyw sağol ama o da olmadı kardeş

kodu hepsini tekrar atar mısınız? Özelden de atabilirsiniz isterseniz

İkisi farklı kütüphaneler, yanlış bilgilendirmeyelim.

evet farklı kütüphaneler bunu

burdan da anlayabileceğini düşünüyorum


tm evet ama önce

bunu dedim ya zaten

“return” ile olabilirmi acaba