from tkinter import *
import tkinter as tk
def gir():
try:
f1 = float(alisfiyat1.get()) # fiyat1
a1 = int(adet1.get()) # adet1
sf1 = float(suankifiyat1.get()) # suankifiyat1
t1 = (f1 * a1) # tutar1
yd1 = (sf1 - f1) / f1 * int(100) # yuzdelik degisim1
kz1 = (sf1 - f1) * a1 # karzarar1
kntrl1["text"] = "Alış Maliyeti: " + str(round(t1, 2))
kntrl2["text"] = "Yüzdelik Değişim: % " + str(round(yd1, 2))
kntrl3["text"] = "Kar/Zarar: " + str(round(kz1, 2))
ha = str(hisseadi.get()) #hisseadi
f2 = float(alisfiyat2.get()) # fiyat2
a2 = int(adet2.get()) # adet2
sf2 = float(suankifiyat2.get()) # suankifiyat2
t2 = (f2 * a2) # tutar2
yd2 = (sf2 - f2) / f2 * int(100) # yuzdelik degisim2
kz2 = (sf2 - f2) * a2 # karzarar2
kntrl4["text"] = "Alış Maliyeti: " + str(round(t2, 2))
kntrl5["text"] = "Yüzdelik Değişim: % " + str(round(yd2, 2))
kntrl6["text"] = "Kar/Zarar: " + str(round(kz2, 2))
of = (t1 + t2) / (a1 + a2) # ortalamafiyat yada tt/ta formülü kullanılır
ta = (a1 + a2) # toplamadet
tt = (t1 + t2) # toplamtutar
tkz = (kz1 + kz2) #!!toplamkar/zarar !!!
oyd = (sf2 - of) / of * int(100) # ortalama yuzdelik degisim!!!!
kntrl7["text"] = "Toplam Maliyet: " + str(round(tt, 3))
kntrl8["text"] = "Ort Yüzdelik Değişim: % " + str(round(oyd, 2))
kntrl9["text"] = "Toplam Kar/Zarar: " + str(round(tkz, 3)) # !!!!!
kntrl10["text"] = "Toplam Adet: " + str(ta)
kntrl11["text"] = "Ortalama Fiyat: " + str(round(of, 3))
except ValueError:
kntrl1["text"] = ("Bir Sayı Giriniz")
p = Tk()
p.title("Borsa")
p.geometry("750x445+600+200")
p.config(bg="black")
l1 = Label(p)
l1.config(text="1.Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l1.grid(row=0,column=0, padx=40)
alisfiyat1 = Entry(p)
alisfiyat1.grid(row=1,column=0, padx=40)
l2 = Label(p)
l2.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l2.grid(row=2,column=0, padx=40)
adet1 = Entry(p)
adet1.grid(row=3,column=0, padx=40)
l3 = Label(p)
l3.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l3.grid(row=4,column=0, padx=40)
suankifiyat1 = Entry(p)
suankifiyat1.grid(row=5,column=0, padx=40)
l4 = Label(p)
l4.config(text="2.Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l4.grid(row=0,column=2, padx=40)
alisfiyat2 = Entry(p)
alisfiyat2.grid(row=1,column=2, padx=40)
l5 = Label(p)
l5.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l5.grid(row=2,column=2, padx=40)
adet2 = Entry(p)
adet2.grid(row=3,column=2, padx=40)
l6 = Label(p)
l6.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l6.grid(row=4,column=2, padx=40)
suankifiyat2 = Entry(p)
suankifiyat2.grid(row=5,column=2, padx=40)
l7 = Label(p)
l7.config(text="Hisse Adını Yazınız", bg="black", fg="white",font=("Calibri italic", 12))
l7.grid(row=2,column=1)
hisseadi = Entry(p)
hisseadi.grid(row=3,column=1)
b1 = Button(p)
b1.config(text="Hesapla", bg="black", fg="white", activebackground="black",
activeforeground="lime", font=("Calibri italic", 12), command=gir)
b1.grid(row=6,column=1, padx=90) #pady ve padx yazıyla kutu arasındaki mesafeyi ayarlıyor
kntrl1 = Label (p)
kntrl1.config(bg="black", fg="white", font=("calibri",12))
kntrl1.grid(row=6,column=0)
kntrl2 = Label (p)
kntrl2.config(bg="black", fg="white", font=("calibri",12))
kntrl2.grid(row=7,column=0)
kntrl3 = Label (p)
kntrl3.config(bg="black", fg="white", font=("calibri",12))
kntrl3.grid(row=8,column=0)
kntrl4 = Label (p)
kntrl4.config(bg="black", fg="white", font=("calibri",12))
kntrl4.grid(row=6,column=2)
kntrl5 = Label (p)
kntrl5.config(bg="black", fg="white", font=("calibri",12))
kntrl5.grid(row=7,column=2)
kntrl6 = Label (p)
kntrl6.config(bg="black", fg="white", font=("calibri",12))
kntrl6.grid(row=8,column=2)
kntrl7 = Label (p)
kntrl7.config(bg="black", fg="white", font=("calibri",12))
kntrl7.grid(row=9,column=1,sticky=W)
kntrl8 = Label (p)
kntrl8.config(bg="black", fg="white", font=("calibri",12))
kntrl8.grid(row=10,column=1,sticky=W)
kntrl9 = Label (p)
kntrl9.config(bg="black", fg="white", font=("calibri",12))
kntrl9.grid(row=11,column=1,sticky=W)
kntrl10 = Label (p)
kntrl10.config(bg="black", fg="white", font=("calibri",12))
kntrl10.grid(row=12,column=1,sticky=W)
kntrl11 = Label (p)
kntrl11.config(bg="black", fg="white", font=("calibri",12))
kntrl11.grid(row=13,column=1,sticky=W) #sticky=W Labeli sola yaslıyor w west demek
def Kaydet():
with open("borsakayit.txt", "a") as f:
f.write((hisseadi.get().capitalize().center(110) + ("\n"))) #hisse adının ilk harfini txt e büyük harf olarak yazdırmak için capitalize() kullanılır.center(110) ise yazının ortalanmasını sağlar 20karakter sayısı+boşluk sayısını ifade eder.
f.write(("1.Hisse Alış Fiyatı : ") + (alisfiyat1.get().ljust(45) + ("2.Hisse Alış Fiyatı : ") + (alisfiyat2.get() + ("\n") )))
f.write(("1.Adet").ljust(24) + (": ") + (adet1.get().ljust(45) + ("2.Adet").ljust(24) + (": ") + (adet2.get() + ("\n") ))) #.ljust() ve .rjust() yardımı ile yazılar(1.Adet) ve (:) arasındaki boşluk ayarlanmıştır.
f.write(("1.Şuanki Fiyat").ljust(21) + (": ") + (suankifiyat1.get().ljust(45) + ("2.Şuanki Fiyat").ljust(21) + (": ") + (suankifiyat2.get() + ("\n") + ("\n") )))
f.write(kntrl1["text"].ljust(68) + kntrl4["text"] + ("\n")) #f.write(kntrl1["text"]) hesaplama sonuçlarını yazdırma şekli böyledir.
f.write(kntrl2["text"].ljust(63) + kntrl5["text"] + ("\n"))
f.write(kntrl3["text"].ljust(69) + kntrl6["text"] + ("\n"*2))
f.write(kntrl7["text"].rjust(60) + ("\n"))
f.write(kntrl8["text"].rjust(67) + ("\n"))
f.write(kntrl9["text"].rjust(61) + ("\n"))
f.write(kntrl10["text"].rjust(54) + ("\n"))
f.write(kntrl11["text"].rjust(59) + ("\n"*4))
f.flush()
def Sil():
with open("borsakayit.txt", "w") as f: #w eskiyi silip yeniyi kaydeder a eski kaydı tutar yeni kaydıda altına yazmaya devam eder.w+ veya a+ yaparsak hem yazma hem okuma yapar.
f.write("")
f.flush()
f.close()
def Temizle():
alisfiyat1.delete(0,END)
adet1.delete(0,END)
suankifiyat1.delete(0, END)
alisfiyat2.delete(0, END)
adet2.delete(0, END)
suankifiyat2.delete(0, END)
hisseadi.delete(0, END)
def portfoyum(): # 2.bir ana pencere açtık portfoy adında
p1 = tk.Tk()
p1.title("Portföyüm")
p1.geometry("750x470+600+200")
p1.config(bg="black")
frame = tk.Frame(master=p1)
frame.pack(fill="both", expand=True)
y_scroll = tk.Scrollbar(master=frame)
y_scroll.pack(side="right", fill="y")
x_scroll = tk.Scrollbar(master=frame)
x_scroll.pack(side="bottom", fill="x")
text = tk.Text(master=frame, wrap="none", undo=True,cursor="plus")
text.pack(fill="both", expand=True)
y_scroll.configure(orient="vertical", command=text.yview)
x_scroll.configure(orient="horizontal", command=text.xview)
text.configure(yscrollcommand=y_scroll.set, xscrollcommand=x_scroll.set, bg="#0d0d0d", fg="#39e600", font=("Calibri italic", 12, "bold"))
with open("borsakayit.txt", "r") as f: # txti portfoy sayfasına yazdırma kodu
metin = f.readlines()
for i in metin:
text.insert("insert", i)
menubar = tk.Menu(master=p) #seçenekler menü barın kodları
filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label="Portföyüm", command=portfoyum)
filemenu.add_command(label = "Kaydet", command = Kaydet)
filemenu.add_command(label = "Sil", command = Sil)
filemenu.add_separator() #seçeneklerdeki sil ve temizle yazıları arasındaki cizgi kodu
filemenu.add_command(label = "Temizle", command = Temizle)
menubar.add_cascade(label = "Seçenekler", menu = filemenu)
p.config(menu=menubar)
mainloop()
# Fiyat(f) Adet(a) Tutar(t) Şuanki Fiyat(sf) % Değişim(yd) K/Z(kz)
#
#Alış1 3.60(f1) 280(a1) 1008(t1) 3.65(sf1) none none
# (fiyat1*Adet1 = Tutar1) (Şuanki Fiyat1 - Fiyat1)/Fiyat1 * 100=% Değişim1 (Şuanki Fiyat1 - Fiyat1) * (Adet1)=K/Z1
# (f1)*(a1) = t1 (sf1-f1)/f1*100 = yd1 (sf1-f1)*a1 = kz1
#
#
#
#
#
#Alış2 3.80(f2) 200(a2) 760(t2) 3.90(sf2) none none
# (fiyat2*Adet2 = Tutar2) (Şuanki Fiyat2 - Fiyat2)/Fiyat2 * 100=% Değişim2 (Şuanki Fiyat2 - Fiyat2) * (Adet2)=KZ/2
# (f2)*(a2) = t2 (sf2-f2)/f2*100 = yd2 (sf2-f2)*a2 = kz1
#
#Ortalama(ort) (of) (ta) (tt)
#^
#^ (Adet1+Adet2 = ToplamAdet) (Tutar1+Tutar2 = ToplamTutar)
#^ (a1+a2 = ta) (t1+t2 = tt)
#^
#(Tutar1+Tutar2)/(Adet1+Adet2) = OrtalamaFiyat
#(t1+t2)/(a1+a2)=of
Emeği gecenler;
@dildeolupbiten
@ismailarilik
@hasser
Yardımlarınız için çok teşekkür ediyorum…
exe;
https://www.dosyaupload.com/dy0s