İTÜ özgür yazılım kulübü tarafından düzenlenen "PYTHON" eğitimi finali vermiş bulunmaktadır ve bitirme tezi olarak bizden merkez bankasından döviz kurlarını çekip kendi aralarında dönüşüm yapmamızı istediler. Bende kendi kafama göre düşünüp bir şeyler yaptım. Windows'da bir türlü türkçe karakter sorununu çözemedim ama olduğu kadar işte. Bunun için linuxa geçmeyi düşünüyorum. Python yazarken gerçekten çok kolaylık sağlıyor. Bende yarım günde yazdığım kodları sizinle paylaşayım.(Normalde 1 saatlik iş ama kontroller hakkında yeterince tekrar yapmamışım bunu anladım)
Kodlar:
# -*- coding: cp1254 -*- import urllib from Tkinter import * import datetime formum=Tk() Etiket=Label(text="",justify=LEFT) f = ("arial","10", "normal") Etiket.configure(font=f) Etiket.pack() formum.tk_setPalette("#74ba9a") formum.wm_title("Forex Borsa Takibi") formum.resizable(width=FALSE, height=FALSE) formum.geometry("720x380") dtceketiket=Label(text="") dtlenetiket=Label(text="") isaret=Label(text="->") dt=Entry( bg="white",text="") etiketsonuc=Label() dcektext="" dlentext="" Donusturulecek = Listbox(bg="white",selectbackground="orange") Donusturulen = Listbox(bg="white",selectbackground="orange") liste={} def VerOdunu(): Donusturulecek.delete(0, END) f = open(str(datetime.date.today()) +'.log', 'a') kaynakcek=urllib.urlopen("http://www.tcmb.gov.tr/kurlar/today.html") kodlar=(kaynakcek.read().lower()) bolum ="" bolme=kodlar.split(""" """) for dongu in range(18): Satirim=bolme[dongu+11] Satirim = Satirim.replace(" ",",") for i in range(100): Satirim= Satirim.replace(",,",",") Satirim=Satirim.replace(" ","-") Satirim=Satirim.replace("--","-") baslangic=Satirim.index("-")+1 baslangic=Satirim.index("-",baslangic)+1 bitis =Satirim.index(",",baslangic) DovizAd="" for i in range(bitis-baslangic): DovizAd+=Satirim[i+baslangic] if("euro" in DovizAd): DovizAd="euro\t"; if("suud" in DovizAd): DovizAd="suudi riyali"; DovizAd=DovizAd.replace("ı","i") DovizAd=DovizAd.replace("ç","c") bolum += DovizAd.replace("-"," ") + "@\t:" baslangic=Satirim.index(",",baslangic)+1 bitis =Satirim.index(",",baslangic) DovizAl="" for i in range(bitis-baslangic): DovizAl+=Satirim[i+baslangic] DovizAl=DovizAl.replace("-","") bolum += " @Alis@ : @"+str(round(float(DovizAl), 4)) +"@ " baslangic=Satirim.index(",",baslangic)+1 bitis=len(Satirim) try: bitis =Satirim.index(",",baslangic) except: pass DovizSat="" for i in range(bitis-baslangic): DovizSat+=Satirim[i+baslangic] DovizSat=DovizSat.replace("-","") bolum += "\t| @Satis@ : @" +str(round(float(DovizSat), 4)) +"\n" liste[DovizAd.replace("-"," ").title()]=[float(DovizAl),float(DovizSat)] Donusturulecek.insert(END,DovizAd.replace("-"," ").title()) Donusturulen.insert(END,DovizAd.replace("-"," ").title()) f.write(bolum.replace("@ \t| @Satis@ : @",",").replace("@\t: @Alis@ : @",",").replace("\t","")) f.close() Etiket["text"]=bolum.replace("€","").replace("@","").replace("ß","").replace("ı","i").replace("ç","c").title().replace("[]","") formum.after(30000, VerOdunu) VerOdunu() def orta(): Etiket["text"]="" sonlst={} deneme=0 f=open(str(datetime.date.today())+'.log','r') lst=f.readlines() f.close() for i in lst: etlist=i.replace("\n","").split(",") if(etlist[0] not in sonlst): sonlst[str(etlist[0])]=[float(etlist[1]),float(etlist[2])] else: ortal=sonlst[etlist[0]][0] ortsat=sonlst[etlist[0]][1] ortal=(ortal+float(etlist[1]))/2 ortsat=(ortsat+float(etlist[2]))/2 sonlst[str(etlist[0])]=[ortal,ortsat] metin="" for i in sonlst: metin += str(i)+ "\t: Alis : " +str(round(sonlst[str(i)][0], 4))+ "\t| Satis : "+ str(round(sonlst[str(i)][1], 4))+"\n" Etiket["text"]=metin.replace("euro","euro\t").title() def DonusturArtik(): if((dtlenetiket["text"] not in liste) or (dtceketiket["text"] not in liste)): return else: a = (liste[dtceketiket["text"]][0]) b = (liste[dtlenetiket["text"]][0]) try: c=float(dt.get()) etiketsonuc["text"]="Sonuç : "+ str((c/a)*b) except: return btnort=Button(text="Gün Ortalamasi",command=orta,bg="#ec008c",fg="#ffffff",justify=LEFT) btnDonustur=Button(text="Dönüstür",command=DonusturArtik,bg="#ec008c",fg="#ffffff",justify=LEFT,width=35) btnort.pack() btnDonustur.pack() dtceketiket.pack() dtlenetiket.pack() Donusturulecek.pack() Donusturulen.pack() etiketsonuc.pack() isaret.pack() def Sectikcek(event): dtceketiket["text"]=Donusturulecek.selection_get() def Sectiklen(event): dtlenetiket["text"]=Donusturulen.selection_get() def placele(): Etiket.place(y=15, x=15) Donusturulecek.place(y=15, x=380) Donusturulen.place(y=15, x=560) btnort.place(y=320, x=15) dtceketiket.place(y=200, x=380) dtlenetiket.place(y=200, x=560) dt.place(y=225,x=470) etiketsonuc.place(y=295,x=400) btnDonustur.place(y=255,x=400) isaret.place(y=200,x=530) Donusturulecek.bind('<<ListboxSelect>>', Sectikcek) Donusturulen.bind('<<ListboxSelect>>', Sectiklen) placele() mainloop()
Hocam selam. Yeni python öğrenen biriyim. Sizin gibi 3-5 sene önce paylaşılmış çeşitli kodları pycharma giriyorum. Genel hata, modüllerin yüklenememesi/bulunamaması. Bunun sebebi zaman içerisinde import tanımlarının değişmesi midir? Eğer öyleyse yapılan kodlama sürekli kontrol edilip güncellenmelidir. Doğru mu?
YanıtlaSilEmeğiniz için teşekkürler.
Yanıtını geç gördüm. Kusuruma bakma. Merkez bankası sayfasını değiştirmiş. Ayrıca bu python 2.7 de yazıldı tabi 3.x.x versiyonunda bir çok şey farklı. bambaşka bir çekirdek üzerinden gidiyor resmen. Bu örneği de ders aldığım zamanlarda yapmıştım.
Silimport urllib.request
from tkinter import *
import tkinter as tk
import datetime
formum = tk.Tk()
burasını böyle yaptım düzeldi. Gerisini sen halledersin diye tahmin ediyorum. biraz zaman ayırman gerekiyor sadece. Hataları anlayıp çözüm araman gerekiyor.