14 Eylül 2014 Pazar

süt hesaplayıcı 1.1.6 versiyonu

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()