süt hesaplayıcı basit bir hesap makinesidir. hesaplamak, kaydetmek ve kaydedilen veriyi kullanıcıya yeniden göstermek gibi temel fonksiyonlara sahiptir. geliştirilme aşamasında olduğu için bazı eksik ve kusurları pek tabi olarak var.
ayrıca TitleFrame modülüne de Buradan ulaşabilirsiniz.
#! python3 # -*- coding: utf-8 -*- #yazan : salim yıldırım #proje ismi: süt hesaplayıcı #version = 1.1.6 from tkinter import * import tkinter.ttk as ttk from tkinter.messagebox import * from TitleFrame import * import wckToolTips import datetime import time import sqlite3 pencere = Tk() vt = sqlite3.connect("süt_kayıt.db") im = vt.cursor() metin1="{} yılı {} ayı süt döküm fişine göre toplamda {} litre süt dökmüş olup {} tl gelir elde ettiniz.{} ayı boyunca {} torba süt yemi, {} torba besi yemi ve \ {} torba küsbe olmak üzere toplamda {} torba yem aldınız.süt yeminin birim fiyatı {} tl\'den {} tl , besi yemini {} tl\'den {} tl ve küsbede de {} tl\'den {} tl \ sütcünüze borçlandınız. Toplamda {} tl borçlanmış olup son duruma göre {} tl {}.bilgilerinize arz ederim." metin=""" Süt Hesaplayıcı basit bir S@lim yıldırım uygulamasıdır. Halil Efendi Çiftliği Yazılım Köyü Adına S@lim Yıldırım tarafından üretilmiştir. Halil Efendi Çiftliği Yazılım Köyü tarım ve hayvancılık sektörüne yönelik basit programlar üreten ve AR-GE çalışmaları yapan bir S@lim Yıldırım kuruluşudur. ürününüz bol kazancınız çok olsun. """ ayımız = " " yılımız = " " vri_tarih = " " sonuç=0 grgr = [] y1 = 0 y2 = 0 y3 = 0 y4 = 0 y5 = 0 y6 = 0 sayı1=0 sayı12=0 süt_yemi=0 besi_yemi=0 küsbe=0 toplam_yem_miktarı=0 toplam_yem_borcu=0 bulunduğunuz_ay = " " brüt_kazanç = 0 def hesapla(event=None): global ayımız, yılımız, vri_tarih, y1, y2, y3, y4, y5, y6, sayı1, sayı12, süt_yemi, besi_yemi global küsbe, toplam_yem_miktarı, toplam_yem_borcu, kayıt, bulunduğunuz_ay, brüt_kazanç, sonuç, grgr sonuç_entry.delete(0, "end") toplam_entry.delete(0, "end") if not combo.get(): showerror("Hata!", "Bulunduğunuz ay'ı belirtmediniz!", detail="Lütfen herhangi bir ay adı giriniz!") return "break" else: if not yıln.get(): showerror("Hata!", "Bulunduğunuz yılı belirtmediniz!", detail="Lütfen herhangi bir yıl adı giriniz!") return "break" else: try: ayımız = combo.get() yılımız = yıln.get() except ValueError: showerror("Hata!", "Lütfen sadece sayı giriniz!" ) else: try: g1=int and float(entry2.get()) g2=int and float(entry3.get()) g3=int and float(entry4.get()) g4=int and float(entry5.get()) g5=int and float(entry6.get()) g6=int and float(entry7.get()) g7=int and float(entry8.get()) g8=int and float(entry9.get()) g9=int and float(entry10.get()) g10=int and float(entry11.get()) g11=int and float(entry12.get()) g12=int and float(entry14.get()) g13=int and float(entry15.get()) g14=int and float(entry16.get()) g15=int and float(entry17.get()) g16=int and float(entry18.get()) g17=int and float(entry19.get()) g18=int and float(entry20.get()) g19=int and float(entry21.get()) g20=int and float(entry22.get()) g21=int and float(entry23.get()) g22=int and float(entry24.get()) g23=int and float(entry26.get()) g24=int and float(entry27.get()) g25=int and float(entry28.get()) g26=int and float(entry29.get()) g27=int and float(entry30.get()) g28=int and float(entry31.get()) g29=int and float(entry32.get()) g30=int and float(entry33.get()) g31=int and float(entry34.get()) bulunduğunuz_ay = "{}/{}".format(combo.get(), yıln.get()) y1=int(entry35.get()) y2=int and float(entry36.get()) y3=int(entry37.get()) y4=int and float(entry38.get()) y5=int(entry39.get()) y6=int and float(entry40.get()) sayı12=int and float(entryf.get()) sonuç_entry["text"]= "{}".format(sonuç) grgr = [g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27, g28, g29, g30, g31] #grgr grafik için bize günlerin #listesini oluşturuyor. sonuç = sum(grgr)#sum metotu listemizdeki sayıları topluyor. sayı1 = sayı12 * sonuç süt_yemi= y1 * y2 besi_yemi= y3 * y4 küsbe= y5 * y6 toplam_yem_miktarı= y1 + y3 + y5 toplam_yem_borcu= süt_yemi + besi_yemi + küsbe toplam = toplam_yem_borcu brüt_kazanç= sayı1 - toplam toplam_entry.insert(0, toplam) sonuç_entry.insert(0, sonuç) ay = {1: "Ocak", 2: "Şubat", 3: "Mart", 4: "Nisan", 5: "Mayıs", 6: "Haziran", 7: "Temmuz", 8: "Ağustos", 9: "Eylül", 10: "Ekim", 11: "Kasım", 12: "Aralık"} hafta ={0: "Pazartesi", 1: "Salı", 2: "Çarşamba", 3: "Perşembe", 4: "Cuma", 5: "Cumartesi", 6: "Pazar"} bugün = datetime.date.today() yıl = bugün.year gün = hafta[bugün.weekday()] r_gün = time.strftime("%d") saatimiz = time.strftime("%H:%M:%S") vri_tarih = "{} {} {} {}. {}".format(r_gün, ay[bugün.month], yıl, gün, saatimiz) except ValueError: showerror("Hata!", "Lütfen sadece sayı girin!") TitleFrame.w = TitleFrame(pencere, "Süt Kartı") #TitleFarme'yi bu şekilde TitleFrame.w.grid(row=0, column=0, pady=5, padx=5) #oluşturuyoruz. cerceve1 = TitleFrame.w.getinner() etiket2= ttk.Label(cerceve1, text="1.Gün |") etiket2.grid(row=1, column=0, sticky="w", pady=1, ipady=1) entry2 = ttk.Entry(cerceve1, width=10) entry2.grid(row=1, column=1, pady=1) entry2.focus_set() wckToolTips.register(entry2, "1. gün ")# ipucu metnimiz. etiket3= ttk.Label(cerceve1, text="2.Gün |") etiket3.grid(row=2, column=0, sticky="w", pady=1, ipady=1) entry3 = ttk.Entry(cerceve1, width=10) entry3.grid(row=2, column=1, pady=1) wckToolTips.register(entry3, "2. gün") etiket4= ttk.Label(cerceve1, text="3.Gün |") etiket4.grid(row=3, column=0, sticky="w", pady=1, ipady=1) entry4 = ttk.Entry(cerceve1, width=10) entry4.grid(row=3, column=1, pady=1) wckToolTips.register(entry4, "3. gün") etiket5= ttk.Label(cerceve1, text="4.Gün |") etiket5.grid(row=4, column=0, sticky="w", pady=1, ipady=1) entry5 = ttk.Entry(cerceve1, width=10) entry5.grid(row=4, column=1, pady=1) wckToolTips.register(entry5, "4. gün") etiket6= ttk.Label(cerceve1, text="5.Gün |") etiket6.grid(row=5, column=0, sticky="w", pady=1, ipady=1) entry6 = ttk.Entry(cerceve1, width=10) entry6.grid(row=5, column=1, pady=1) wckToolTips.register(entry6, "5. gün") etiket7= ttk.Label(cerceve1, text="6.Gün |") etiket7.grid(row=6, column=0, sticky="w", pady=1, ipady=1) entry7 = ttk.Entry(cerceve1, width=10) entry7.grid(row=6, column=1, pady=1) wckToolTips.register(entry7, "6. gün") etiket8= ttk.Label(cerceve1, text="7.Gün |") etiket8.grid(row=7, column=0, sticky="w", pady=1, ipady=1) entry8 = ttk.Entry(cerceve1, width=10) entry8.grid(row=7, column=1, pady=1) wckToolTips.register(entry8, "7. gün") etiket9= ttk.Label(cerceve1, text="8.Gün |") etiket9.grid(row=8, column=0, sticky="w", pady=1, ipady=1) entry9 = ttk.Entry(cerceve1, width=10) entry9.grid(row=8, column=1, pady=1) wckToolTips.register(entry9, "8. gün") etiket10= ttk.Label(cerceve1, text="9.Gün |") etiket10.grid(row=9, column=0, sticky="w", pady=1, ipady=1) entry10 = ttk.Entry(cerceve1, width=10) entry10.grid(row=9, column=1, pady=1) wckToolTips.register(entry10, "9. gün") etiket11= ttk.Label(cerceve1, text="10.Gün|") etiket11.grid(row=10, column=0, sticky="w", pady=1, ipady=1) entry11 = ttk.Entry(cerceve1, width=10) entry11.grid(row=10, column=1, pady=1) wckToolTips.register(entry11, "10. gün") etiket12= ttk.Label(cerceve1, text="11.Gün|") etiket12.grid(row=11, column=0, sticky="w", ipady=1) entry12 = ttk.Entry(cerceve1, width=10) entry12.grid(row=11, column=1) wckToolTips.register(entry12, "11. gün") etiket14= ttk.Label(cerceve1, text="12.Gün|") etiket14.grid(row=1, column=2, sticky="w", ipady=1) entry14 = ttk.Entry(cerceve1, width=10) entry14.grid(row=1, column=3) wckToolTips.register(entry14, "12. gün") etiket15= ttk.Label(cerceve1, text="13.Gün|") etiket15.grid(row=2, column=2, sticky="w") entry15 = ttk.Entry(cerceve1, width=10) entry15.grid(row=2, column=3) wckToolTips.register(entry15, "13. gün") etiket16= ttk.Label(cerceve1, text="14.Gün|") etiket16.grid(row=3, column=2, sticky="w") entry16 = ttk.Entry(cerceve1, width=10) entry16.grid(row=3, column=3) wckToolTips.register(entry16, "14. gün") etiket17= ttk.Label(cerceve1, text="15.Gün|") etiket17.grid(row=4, column=2, sticky="w") entry17 = ttk.Entry(cerceve1, width=10) entry17.grid(row=4, column=3) wckToolTips.register(entry17, "15. gün") etiket18= ttk.Label(cerceve1, text="16.Gün|") etiket18.grid(row=5, column=2, sticky="w") entry18 = ttk.Entry(cerceve1, width=10) entry18.grid(row=5, column=3) wckToolTips.register(entry18, "16. gün") etiket19= ttk.Label(cerceve1, text="17.Gün|") etiket19.grid(row=6, column=2, sticky="w") entry19 = ttk.Entry(cerceve1, width=10) entry19.grid(row=6, column=3) wckToolTips.register(entry19, "17. gün") etiket20= ttk.Label(cerceve1, text="18.Gün|") etiket20.grid(row=7, column=2, sticky="w") entry20 = ttk.Entry(cerceve1, width=10) entry20.grid(row=7, column=3) wckToolTips.register(entry20, "18. gün") etiket21= ttk.Label(cerceve1, text="19.Gün|") etiket21.grid(row=8, column=2, sticky="w") entry21 = ttk.Entry(cerceve1, width=10) entry21.grid(row=8, column=3) wckToolTips.register(entry21, "19. gün") etiket22= ttk.Label(cerceve1, text="20.Gün|") etiket22.grid(row=9, column=2, sticky="w") entry22 = ttk.Entry(cerceve1, width=10) entry22.grid(row=9, column=3) wckToolTips.register(entry22, "20. gün") etiket23= ttk.Label(cerceve1, text="21.Gün|") etiket23.grid(row=10, column=2, sticky="w") entry23 = ttk.Entry(cerceve1, width=10) entry23.grid(row=10, column=3) wckToolTips.register(entry23, "21. gün") etiket24= ttk.Label(cerceve1, text="22.Gün|") etiket24.grid(row=11, column=2, sticky="w") entry24 = ttk.Entry(cerceve1, width=10) entry24.grid(row=11, column=3) wckToolTips.register(entry24, "22. gün") etiket26= ttk.Label(cerceve1, text="23.Gün|") etiket26.grid(row=1, column=4, sticky="w") entry26 = ttk.Entry(cerceve1, width=10) entry26.grid(row=1, column=5) wckToolTips.register(entry26, "23. gün") etiket27= ttk.Label(cerceve1, text="24.Gün|") etiket27.grid(row=2, column=4, sticky="w") entry27 = ttk.Entry(cerceve1, width=10) entry27.grid(row=2, column=5) wckToolTips.register(entry27, "24. gün") etiket28= ttk.Label(cerceve1, text="25.Gün|") etiket28.grid(row=3, column=4, sticky="w") entry28 = ttk.Entry(cerceve1, width=10) entry28.grid(row=3, column=5) wckToolTips.register(entry28, "25. gün") etiket29= ttk.Label(cerceve1, text="26.Gün|") etiket29.grid(row=4, column=4, sticky="w") entry29 = ttk.Entry(cerceve1, width=10) entry29.grid(row=4, column=5) wckToolTips.register(entry29, "26. gün") etiket30= ttk.Label(cerceve1, text="27.Gün|") etiket30.grid(row=5, column=4, sticky="w") entry30 = ttk.Entry(cerceve1, width=10) entry30.grid(row=5, column=5) wckToolTips.register(entry30, "27. gün") etiket31= ttk.Label(cerceve1, text="28.Gün|") etiket31.grid(row=6, column=4, sticky="w") entry31 = ttk.Entry(cerceve1, width=10) entry31.grid(row=6, column=5) wckToolTips.register(entry31, "28. gün") etiket32= ttk.Label(cerceve1, text="29.Gün|") etiket32.grid(row=7, column=4, sticky="w") entry32 = ttk.Entry(cerceve1, width=10) entry32.grid(row=7, column=5) wckToolTips.register(entry32, "29. gün") etiket33= ttk.Label(cerceve1, text="30.Gün|") etiket33.grid(row=8, column=4, sticky="w") entry33 = ttk.Entry(cerceve1, width=10) entry33.grid(row=8, column=5) wckToolTips.register(entry33, "30. gün") etiket34= ttk.Label(cerceve1, text="31.Gün|") etiket34.grid(row=9, column=4, sticky="w") entry34 = ttk.Entry(cerceve1, width=10) entry34.grid(row=9, column=5) wckToolTips.register(entry34, "31. gün") cerceve3i = Frame() cerceve3i.grid(row=2, column=0, pady=1, padx=1) entry34.bind("", hesapla) #---------yem kartı------- #yem bilgimizi buraya giriyoruz. TitleFrame.w = TitleFrame(pencere, "Yem Kartı") TitleFrame.w.grid(row=0, column=1, pady=5, padx=5) cerceve3 = TitleFrame.w.getinner() wckToolTips.register(cerceve3, "Yem Kartı") bugün = datetime.date.today() yıl = bugün.year ay = {1: "Ocak", 2: "Şubat", 3: "Mart", 4: "Nisan", 5: "Mayıs", 6: "Haziran", 7: "Temmuz", 8: "Ağustos", 9: "Eylül", 10: "Ekim", 11: "Kasım", 12: "Aralık"} liste = ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"] if bugün.month == 1: ayi = ay[12] yıli = yıl - 1 elif bugün.day < 10: a = bugün.month - 1 ayi = ay[a] yıli = yıl else: ayi = ay[bugün.month] yıli = yıl yıll= ttk.Label(cerceve3, text="Yıl") yıll.grid(row=0, column=0, sticky="w", pady=2) yıln = ttk.Entry(cerceve3, width=20) yıln.grid(row=0, column=1, pady=1) yıln.insert(0, yıli) ayl= ttk.Label(cerceve3, text="Ay") ayl.grid(row=1, column=0, sticky="w", pady=2) combo = ttk.Combobox(cerceve3, width=17) combo["values"] = liste combo.set(ayi) combo.grid(row=1, column=1, sticky="w", padx=3, pady=1) wckToolTips.register(combo, "Ay") def seciminiz(event=None): entrya = combo.get() combo.bind("< >", seciminiz) etiketf= ttk.Label(cerceve3, text="Litre Fiyatı") etiketf.grid(row=2, column=0, sticky="w", pady=2) entryf = ttk.Entry(cerceve3) entryf.grid(row=2, column=1, pady=2) etiket35= ttk.Label(cerceve3, text="Süt Yemi") etiket35.grid(row=3, column=0, sticky="w", pady=2) entry35 = ttk.Entry(cerceve3) entry35.grid(row=3, column=1, pady=2) etiket36= ttk.Label(cerceve3, text="Fiyatı") etiket36.grid(row=4, column=0, sticky="w", pady=2) entry36 = ttk.Entry(cerceve3) entry36.grid(row=4, column=1, pady=2) etiket37= ttk.Label(cerceve3, text="Besi Yemi") etiket37.grid(row=5, column=0, sticky="w", pady=2) entry37 = ttk.Entry(cerceve3) entry37.grid(row=5, column=1, pady=2) etiket38= ttk.Label(cerceve3, text="Fiyatı") etiket38.grid(row=6, column=0, sticky="w", pady=2) entry38 = ttk.Entry(cerceve3) entry38.grid(row=6, column=1, pady=2) etiket39= ttk.Label(cerceve3, text="Küsbe") etiket39.grid(row=7, column=0, sticky="w", pady=2) entry39 = ttk.Entry(cerceve3) entry39.grid(row=7, column=1, pady=2) etiket40= ttk.Label(cerceve3, text="Fiyatı") etiket40.grid(row=8, column=0, sticky="w", pady=2) entry40 = ttk.Entry(cerceve3) entry40.grid(row=8, column=1, pady=2) etiket40= ttk.Label(cerceve3, text="") etiket40.grid(row=9, column=0, sticky="w", pady=4) cerceve2s = Frame(pencere) cerceve2s.grid(row=1, column=0, columnspan=2, pady=1, padx=6) TitleFrame.w = TitleFrame(cerceve2s, "Sonuç") TitleFrame.w.grid(row=1, column=1, columnspan=2, pady=5, padx=5) cerceve3i = TitleFrame.w.getinner() yemi = "Yem Kartı" toplam_entry = ttk.Entry(cerceve3i, width=85, justify="right") toplam_entry.grid(row=0, column=1, padx=5) toplam_entry.insert(0, yemi) süti = "Süt Kartı " sonuç_entry = ttk.Entry(cerceve3i, width=85, justify="right") sonuç_entry.grid(row=1, column=1, pady=6) sonuç_entry.insert(0, süti) btn_pen2 = ttk.Button(cerceve3i, text="Hesapla", command=hesapla) btn_pen2.grid(row=0, column=0, pady=1) wckToolTips.register(btn_pen2, "Hesapla") btn_pen = ttk.Button(cerceve3i, text="Kaydet") btn_pen.grid(row=1, column=0, pady=1) entry40.bind(" ", hesapla) kontrol2 = 0 def grafico(): # fırat hocamızın katkısıdır. global kontrol2 if grgr == [] or not combo.get() and not yıln.get(): cevap = showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") elif len(yıln.get()) < 4: showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") elif grgr != []: if not kontrol2: def sor1g(): global kontrol2 kontrol2 = 0 pencere3.destroy() pencere3 = Toplevel() pencere3.wm_iconbitmap("graph.ico") pencere3.resizable() pencere3.wm_protocol("WM_DELETE_WINDOW", sor1g) cw = 670 #genişlik ch = 500 #yükseklik c = Canvas(pencere3, width=cw, height=ch, background="white") c.grid(row=0, column=1, sticky="w", padx=10, pady=1) # x düzlemindeki çizgi c.create_line(10, ch, cw, ch) # y düzlemindeki çizgi c.create_line(10, 15, 10, ch) for a, b in zip(range(10, ch, 10), range(100, 0, -2)): #sol taraftaki kesikli çizgiler c.create_line(0, a, 20, a) #kesikli çizgiler üzerindeki değerler c.create_text(30, a, text=str(b)) x = 45 y = 55 veriler = grgr ##veriler = [random.randint(0, 100) for i in range(10)] limit = x * len(veriler) while x <= limit: for i in veriler: #verileri gösteren çubuklar c.create_rectangle(x, ch-(i*4), y, ch, outline="black", fill="royalblue") x += 20.5 y += 20.5 pencere3.title("%s yılının %s ayına ait Süt grafiği"%(yılımız, ayımız)) kontrol2 = 1 else: pass kontrol = 0 def hakkında(): global kontrol if not kontrol: def sor1(): global kontrol kontrol = 0 pencere4.destroy() #proje hakkında bilgi veren penceremiz. pencere4 = Toplevel() pencere4.resizable(False, False) pencere4.wm_attributes("-topmost", 1) pencere4.wm_iconbitmap("quest.ico") etiket=Label(pencere4, text=metin, font=("Flux",15, "bold")) etiket.grid(row=9, column=0, sticky="w") pencere4.title("Hakkında") pencere4.wm_protocol("WM_DELETE_WINDOW", sor1) kontrol = 1 else: pass kontrol1 = 0 def hakkında1(): global kontrol1 if grgr == [] or not combo.get() and not yıln.get(): cevap = showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") elif len(yıln.get()) < 4: showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") elif grgr != []: if not kontrol1: def sor11(): global kontrol1 kontrol1 = 0 pencere61.destroy() pencere61 = Toplevel() pencere61.title("sonuç") pencere61.wm_attributes("-topmost", 1) pencere61.wm_protocol("WM_DELETE_WINDOW", sor11) kontrol1 = 1 etiket = Label(pencere61, font=("Flux",15, "bold"), justify="left", wraplength=500) if brüt_kazanç > 0: sonuçi="alacağınız bulunmaktadır" elif brüt_kazanç == 0: sonuçi="alacağınız bulunmamaktadır" else: sonuçi="borcunuz bulunmaktadır" etiket["text"] = metin1.format(yılımız, ayımız, sonuç, sayı1, ayımız, y1, y3, y5, toplam_yem_miktarı, y2, süt_yemi, y4, besi_yemi, y6, küsbe, toplam_yem_borcu, round(abs(brüt_kazanç)), sonuçi) etiket.grid(row=0, column=0, sticky="w") else: pass kayıt_denetim = 0 def sor(): global kayıt_denetim kayıt_denetim = 1 if grgr == []: pencere.destroy() elif grgr != []: sorun=showwarning("Kapatılacak!" , "Program kapatılacak!", detail="Süt ve Yem kartlarını kaydetmek istiyormusunuz?", type=YESNOCANCEL) if sorun == "no": pencere.destroy() if sorun == "cancel": pass if sorun == "yes": kaydet() if kayıt_denetim == 0: pencere.destroy() if kayıt_denetim == 1: pass ##--------------kaydet bölümümüz----------------------------- def kaydet(): global grgr, kayıt_denetim #grafik listesini boşaltıyoruz #ki kayıttan sonra garfik göstermesin grgr = [] if sonuç == 0 or not combo.get() and not yıln.get(): showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") elif len(yıln.get()) < 4: showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\ doldurduğunuzdan emin olunuz!") else: z = vri_tarih ay = bulunduğunuz_ay litre_f = sayı12 dökülen_süt = sonuç besi_yemi = y3 b_fiyatı = y4 süt_yemi = y1 s_fiyatı = y2 küsbe = y5 k_fiyatı = y6 im.execute("""CREATE TABLE if not exists personel (ay unique, litre_f, dökülen_süt, besi_yemi, b_fiyatı, süt_yemi, s_fiyatı, küsbe, k_fiyatı, z)""") try: im.execute("""INSERT INTO personel VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", (ay, litre_f, dökülen_süt, besi_yemi, b_fiyatı, süt_yemi, s_fiyatı, küsbe, k_fiyatı, z)) showinfo("Tamamlandı" , "{} yılı {} ayı ile ilgili veri başarıyla kaydedildi!".format(yılımız,ayımız)) entry2.delete(0, "end") entry3.delete(0, "end") entry4.delete(0, "end") entry5.delete(0, "end") entry6.delete(0, "end") entry7.delete(0, "end") entry8.delete(0, "end") entry9.delete(0, "end") entry10.delete(0, "end") entry11.delete(0, "end") entry12.delete(0, "end") entry14.delete(0, "end") entry15.delete(0, "end") entry16.delete(0, "end") entry17.delete(0, "end") entry18.delete(0, "end") entry19.delete(0, "end") entry20.delete(0, "end") entry21.delete(0, "end") entry22.delete(0, "end") entry23.delete(0, "end") entry24.delete(0, "end") entry26.delete(0, "end") entry27.delete(0, "end") entry28.delete(0, "end") entry29.delete(0, "end") entry30.delete(0, "end") entry31.delete(0, "end") entry32.delete(0, "end") entry33.delete(0, "end") entry34.delete(0, "end") entryf.delete(0, "end") entry35.delete(0, "end") entry36.delete(0, "end") entry37.delete(0, "end") entry38.delete(0, "end") entry39.delete(0, "end") entry40.delete(0, "end") sonuç_entry.delete(0, "end") toplam_entry.delete(0, "end") kayıt_denetim = 0 # kayıttan sonra süt ve yem kartlarını boşaltıyoruz # ki yeni veri girişine müsait olsunlar. except sqlite3.IntegrityError: #aynı değerde veri girilmesin diye hata yakalıyoruz. soruni=showwarning("Uyarı!" , " {} yılının {} ayı ile ilgili kayıt zaten var!".format(yılımız,ayımız), detail = "Var olan kayıt üzerine kayıt yapamazsınız!", type=RETRYCANCEL) if soruni == "cancel": pass if soruni == "retry": hesapla() kayıt_denetim = 1 vt.commit() if not kontrolg : pass if kontrolg ==1: pass kontrolg = 0 k_bi_hak = 0 def gösterge_paneli(): global kontrolg #süt takip kartının kodları #try vasıtasıyla veri... #tabanımız olmasa bile hata vermiyor. try: im.execute("""SELECT * FROM personel""") c = im.fetchall() if not c: #veri tabanımız var ama içi boşsa # hata vermesini önlüyoruz. # bu şekilde toplevel'ın da açılmasını #önlüyoruz. ki hem hata hemde # toplevel açılmasın. showwarning("Uyarı!" , "Kayıtlı herhangi bir veri yok!", detail = "Lütfen önce herhangi bir yılın herhangi bir ayına ait kayıt giriniz!") else: if not kontrolg: def sorg(): global kontrolg kontrolg = 0 gösterge_paneli.destroy() gösterge_paneli = Toplevel() gösterge_paneli.title("Süt&Yem Takip Kartı") gösterge_paneli.geometry("600x300") gösterge_paneli.wm_attributes("-topmost", 1) gösterge_paneli.resizable(False, False) gösterge_paneli.wm_protocol("WM_DELETE_WINDOW", sorg) im.execute("""SELECT * FROM personel""") c = im.fetchall() for i in c: sütunlar = ["Ay/Yıl",] değerler = i[0] anamenu = Menu(pencere, tearoff=0) TitleFrame.w = TitleFrame(gösterge_paneli, "Süt&Yem Takip") TitleFrame.w.grid(row=0, column=0, columnspan=3, pady=5, padx=5) cerceve2 = TitleFrame.w.getinner() cerceve3i4 = Frame(cerceve2) cerceve3i4.grid(row=0, column=0, padx=10, pady=10) cerceve3i4t = Frame(cerceve2) cerceve3i4t.grid(row=0, column=1, padx=10, pady=10) etiket = Label(cerceve3i4t, justify="left", wraplength=300) etiket["text"] = "Şu an için seçili herhangi bir veri yok! kayıtlı tarihlerin yem\ ve süt kartını görmek için çift tıklamanız yeterli. " etiket.grid(row=0, column=2) tv = ttk.Treeview(cerceve3i4, columns=sütunlar, show="headings") for sütun in sütunlar: tv.heading(sütun, text=sütun) for değer in c: tv.insert("", "end", values=değer) def sağtık(event): satır = tv.identify_row(event.y) if satır: tv.selection_set(satır) anamenu.tk_popup(event.x_root, event.y_root) vt.commit() im.execute("""SELECT * FROM personel""") c = im.fetchall() kontrolg = 1 def gösterici(event=None): seçilen = tv.selection() silinen = tv.item(item=seçilen)["values"] if seçilen : for i in c: if i[0] == silinen[0]: aysi = i[0] tam_tarih = aysi.split("/") ay = tam_tarih[0] yıl = tam_tarih[1] litre_fiyatı = i[1] süt = i[2] besi_yemi_miktarı = i[3] besi_yemi_fiyatı = i[4] süt_yemi = i[5] süt_yemi_fiyatı = i[6] küsbe = i[7] küsbe_fiyatı = i[8] son = i[2] * i[1] toplam_yem = i[3]+i[5]+i[7] süt_tutar= i[5]* i[6] besi_tutar=i[3]*i[4] küsbe_tutar=i[7]*i[8] toplam_yem_borcu = süt_tutar + besi_tutar + küsbe_tutar brüt_kazançi = son - (süt_tutar + besi_tutar + küsbe_tutar) if brüt_kazançi > 0: sonuçi="alacağınız bulunmaktadır" elif brüt_kazançi == 0: sonuçi="alacağınız bulunmamaktadır" else: sonuçi="borcunuz bulunmaktadır" etiket["text"] = metin1.format(yıl, ay, süt, son, ay, süt_yemi, besi_yemi_miktarı, küsbe, toplam_yem, süt_yemi_fiyatı, süt_tutar, besi_yemi_fiyatı, besi_tutar, küsbe_fiyatı, küsbe_tutar, toplam_yem_borcu, round(abs(brüt_kazançi)), sonuçi) etiket.grid(row=0, column=2) def bi_hak(): #burası hakkında bölümümüz. kaydettiğimiz veriler #hakkında bilgileri buradan alıyoruz. #mesela tam tarih , saat gibi. #daha da geliştirilebilir. global k_bi_hak if not k_bi_hak: def sorb(): global k_bi_hak k_bi_hak = 0 hakkında.destroy() hakkında = Toplevel() k_bi_hak = 1 hakkında.title("Hakkında") hakkında.geometry("300x100") hakkında.wm_attributes("-topmost", 1) hakkında.resizable(False, False) hakkında.wm_protocol("WM_DELETE_WINDOW", sorb) seçilen = tv.selection() silinen = tv.item(item=seçilen)["values"] h_et = Label(hakkında, justify="left", wraplength=300) h_et.grid(row=0, column=2) if seçilen : for i in c: if i[0] == silinen[0]: aysi = i[0] tam_tarih = aysi.split("/") ay = tam_tarih[0] yıl = tam_tarih[1] vakit_n = i[9] h_et["text"] = """ Dosya adı \t: süt&yem kartı {} {}\n kayıt tarihi\t: {} """.format(ay, yıl, vakit_n) else: pass def sil(): seçilen = tv.selection() silinen = tv.item(item=seçilen)["values"] if seçilen : for i in c: if i[0] == silinen[0]: aysi = i[0] tam_tarih = aysi.split("/") ay = tam_tarih[0] yıl = tam_tarih[1] sor = askyesno("DİKKAT!", "{} yılı {} ayı ile ilgili kaydı silmek istediğinize emin misiniz?".format(yıl, ay)) if sor: im.execute("""DELETE FROM personel WHERE ay = ? """, (i[0],) ) vt.commit() tv.delete(seçilen) showinfo("Tamamlandı" , "{} yılı {} ayına ait kayıt silindi.".format(yıl, ay)) tv.bind(" ", gösterici) tv.bind(" ", sağtık) tv.grid(row=0, column=0, sticky='ns') anamenu.add_command(label="Sil", command=sil) anamenu.add_separator() anamenu.add_command(label="Sonuç", command=gösterici) anamenu.add_command(label="Hakkında", command=bi_hak) except sqlite3.OperationalError: showwarning("Uyarı!" , "Kayıtlı herhangi bir veri yok!", detail = "Lütfen önce herhangi bir yılın herhangi bir ayına ait kayıt giriniz!") def Analiz(): """ şu an için aktiv olmayan bu bölümde analiz yapmayı planlıyorum. mesela iki tarih arasındaki süt, yem vb. artış yüzdeleri falan hatta kullanıcıya öner verme falan . """ pass menu= Menu(pencere) pencere.config(menu=menu) dosya= Menu(menu, tearoff=0) menu.add_cascade(label="Dosya", menu=dosya) dosya.add_command(label="Kaydet", command=kaydet) dosya.add_command(label="Süt Takip Kartı", command=gösterge_paneli ) dosya.add_command(label="Çıkış", command=sor) yeni= Menu(dosya,tearoff=0) dosya2= Menu(menu, tearoff=0) menu.add_cascade(label="Analiz",menu=dosya2) dosya2.add_command(label="Analiz kartı", command=Analiz) dosya3= Menu(menu, tearoff=0) menu.add_cascade(label="Grafik",menu=dosya3) dosya3.add_command(label="Aylık Süt Grafiği", command=grafico) dosya4= Menu(menu, tearoff=0) menu.add_cascade(label="Sonuç",menu=dosya4) dosya4.add_command(label="Sonuç", command=hakkında1) dosya5= Menu(menu, tearoff=0) menu.add_cascade(label="Yardım",menu=dosya5) dosya5.add_command(label="Süt Hesaplayıcı Hakkında", command=hakkında) pencere.title("Süt hesaplayıcı v 1.1.6") pencere.geometry("670x430") pencere.resizable(False, False) pencere.wm_protocol("WM_DELETE_WINDOW", sor) pencere.mainloop()