Coin Değerlerini Gösteren Widget
- Atakan Ekşi
- 8 May 2023
- 4 dakikada okunur
Güncelleme tarihi: 23 Oca
Bu yazımda istediğimiz coinlerin değerini gösteren basit bir widget'ı nasıl yaptığımı anlatacağım. Bu widgeti python dilinde kodladım. Programın amacı istediğimiz coinlerin değerini ekranımızın küçük bir bölümde sürekli takip edebilmek. Programımı yüklemek isterseniz aşağıdaki zipi indirip başka bir klasöre ayıklamanız gerekiyor.
Kodun github klasörüne aşağıdaki linkten ulaşabilirsiniz
Vakit kaybetmeden koda geçelim.
Koda başlamadan önce gerekli kütüphaneleri kodumuza ekliyoruz ben bu kodda
import requests import json from tkinter import *
3 tane kütüphane kullandım. Bu kütühaneler kurulu değilse terminalden kurmanız gerekiyor.
Daha sonra kodumuzda kullanacağımız verileri giriyoruz.
payload = {} #binance sitesinden veri çekmek için headers= {} #binance sitesinden veri çekmek için colour1='#EEEEEE' #uygulamamızın arka plan rengi fon1=('Arial 12 bold') #uygulamamızın yazı tipi coinEtiketi=["0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0", "0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"] #tkinter labellarını buna bağlayacağız coins=[] #kullanıcı tarafından girilen coinler buraya kaydedilecek coinismi = ["BTCUSDT", "ETHUSDT", "SXPUSDT", "SPELLUSDT", "XRPUSDT", "ZILUSDT", "GMTUSDT", "COTIUSDT", "RLCUSDT", "RVNUSDT", "OPUSDT", "DYDXUSDT", "APEUSDT", "MTLUSDT", "USDTTRY"] #kullanıcı tarafından girilen coinler buraya kaydedilecek #eğer kullanıcı hiç bir coin girmezse otomatik burdaki 15 coin gösterilecek url = "https://api.binance.com/api/v3/ticker/price?&symbols=[" #binance dan veri çekmemizi sağlayacak url #bu url ye coin isimlerini ekleyeceğiz i = 0 coinoldprice=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #ekranda fiyatlarda değişiklik olunca yeşil ve kırmızı #renkle fiyatı göstericez bunun için eski fiyatları kodumuzda saklamamız lazım
Program başlatılırken bizim belirlediğimiz 15 tane coinin url sini oluşturuyoruz. Eğer kullanıcı coin ismi girmezse bizizm belirlediğimiz 15 tane coin gösterilecek.
while len(coinismi) - i: url = url + "%22" + coinismi[i] + "%22" i = i + 1 if i != len(coinismi): url = url + "," elif i == len(coinismi): url = url + "]" #program başlatılırken bizim belirlediğimiz 15 tane coinin url sini oluşturuyoruz
Coinlerin değerini her 5 saniyede bir urlden çekecek olan kodu giriryoruz.
def veri(): global coinismi, result global coinEtiketi coindeger = requests.get(url, headers=headers, data=payload) result = json.loads(coindeger.content) #urlden gelen bilgiyi resulta kaydettim coin_goster() window.after(5000, veri) #her 5 saniyede bir veri fonku çalıştırılacak
Coin değerlerini ekranda gösterceğimiz kodu giriyoruz.
def coin_goster () : global coinismi,coinEtiketi ,result i=0 while len(coinismi)-i: ind=next((index for (index, d) in enumerate(result) if d["symbol"] == coinismi[i]), None) #coinler urlden girdiğimiz sırayla gelmediği için coinin hangi indexde bulunuğunu öğreniyoruz coinEtiketi[i]['text']=(float(result[ind]["price"])) #coinin fiyatını ekrana yazdırıyoruz if (float(result[ind]["price"])) > coinoldprice[i]: coinEtiketi[i]['fg']='green' elif (float(result[ind]["price"])) < coinoldprice[i]: coinEtiketi[i]['fg'] = 'red' else: coinEtiketi[i]['fg']='#000000' coinoldprice[i]=(float(result[ind]["price"])) #coin fiyatının rengini değiştiriyoruz i=i+1 window.update() #uygulamayı güncelliyoruz
Daha sonra tkinter penceresini oluşturuyoruz.
window=Tk () #pencere oluşturuyoruz window.title('COIN PRICES') #uygulamamıza isim veriyoruz window.attributes('-topmost', 'true')#ekranın hep en üsttünde kalmasını sağlıyoruz window.configure(bg=colour1) #pencerenin rengini belirliyoruz
Açılış ekranından fiyat ekranına geçerken ekran temizlensin diye bir fonksiyon yaızoruz.
def remove_widgets(): for widget in window.winfo_children(): widget.destroy() #açılış ekranından fiyat ekranına geçerken ekran temizlensin diye bir fonk oluşturdum

Coinlerin gösterileceği sayfayı tasarlıyrouz.
def page2(): global coinismi,url,i,coins if coins.get(): coinss = coins.get() coinismi = coinss.split(",") url = "https://api.binance.com/api/v3/ticker/price?&symbols=[" i = 0 while len(coinismi) - i: url = url + "%22" + coinismi[i] + "%22" i = i + 1 if i != len(coinismi): url = url + "," elif i == len(coinismi): url = url + "]" # kullanıcının girdiği coinleri "," ile ayırdık daha sonra bu coinlerle yeni bir url
oluşturduk remove_widgets() frame1 = Frame(window, bg=colour1) frame1.grid(row=0, column=0) frame2 = Frame(window, bg=colour1) frame2.grid(row=0, column=1) frame3 = Frame(window, bg=colour1) frame3.grid(row=0, column=2) # tkinter için 3 frame kullandık c = 0
sayac = len(coinismi) while sayac: Label(frame1, text=coinismi[c], font=fon1, bg=colour1, padx=8, pady=8).pack() Label(frame2, text=':', font=fon1, bg=colour1, padx=8, pady=8).pack() coinEtiketi[c] = Label(frame3, font=fon1, bg=colour1) coinEtiketi[c].pack(padx=8, pady=6.5) c = c + 1 sayac = sayac - 1 veri() # coinlerin isimlerini ekranda gösterdik
Açılış ekranını tasarlıyoruz.

def page1(): global coins remove_widgets() frame1 = Frame(window, bg=colour1) frame1.grid(row=0, column=0) frame2 = Frame(window, bg=colour1) frame2.grid(row=2, column=0) frame3 = Frame(window, bg=colour1) frame3.grid(row=3, column=0) # tkinter için 3 frame kullandık Label(frame1, text='Enter coins name (ex: BTCUSDT,ETHUSDT,XRPUSDT,USDTTRY) :', font=fon1, bg=colour1, padx=8, pady=8, justify='center').pack() coins = Entry(frame2, width=60, font=fon1, bg=colour1, justify='center') coins.pack(padx=60, pady=5) butonnn=Button(frame3,text="START PROGRAM",command=page2) butonnn.pack()
# kullanıcıdan alacağımız coin isimlerini ve başlat buttonunu ayarladık
Son olarak açılış ekranı fonksiyonunu ve pencerenin sürekli ekranda kalmasını sağlayacak fonksiyonu çalıştırıyoruz.
page1() # page1 isimli giriş ekranını çalıştırdık window.mainloop() # pencereyi sürekli açık tutacak fonksiyonu girdik
Kodumuz hazır şimdi terminal ekranına gelip
pyinstaller --onedir "kodu yazdığımız dosyanın ismi".py buraya kodu yazdığımız dosyanın ismini girip entera basıyoruz. Terminal işlemi bittikten sonra exe dosyası bilgisayarınızda bu kodu yazdığınız dosyanın içerisindeki "dist" adlı dosyada olacaktır. O klasöre girip exe uzantılı dosyayı çalıştırmanız yeterlidir.
Comments