top of page
DALL·E 2025-01-22 23.11.10 - A vertical, futuristic design for a website background that c

Coin Değerlerini Gösteren Widget

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


bottom of page