9 Ekim 2014 Perşembe

SizeGrip


SizeGrip pencerenin sağ alt köşesinde küçük bir kutu olup penceremizi yeniden boyutlandırmak için kullanılır . Ayrıca pencereye estetik bir görünümde sağlar. aslına bakarsanız SizeGrip olmasada pencerelerimizi boyutlandırabiliriz ama eğer kullandığınız programda boyutlandırılabilen ve boyutandırılamayan pencerelerimiz mevcutsa kullanıcımıza penceremizin boyutlandırılabilir olduğunu sezdirmek için sizegrip'i kullanabiliriz. Tabi ki bu pencere aracını kullanmak programcının tercihine kalmış birşeydir .

SizeGrip "ttk.Sizegrip" fonksiyonu kullanılarak oluşturulur:

ttk.Sizegrip().grid(column=999, row=999, sticky=(S,E))

veya

s_g = ttk.Sizegrip()
s_g.grid(column=999, row=999, sticky=(S,E))

şeklinde de yazılabilir.

sizegrip'i basit bir pencere içerisinde aşağıdaki gibi kullanabiliriz.

#! python3 
# -*- coding: utf-8 -*- 
 
from tkinter import *
import tkinter.ttk as ttk
 
pencere = Tk()
pencere.columnconfigure(0, weight=1)#menümüzün pencereyle
pencere.rowconfigure(0, weight=1)   #hareket etmesini sağlıyoruz
 
ttk.Sizegrip(pencere).grid(column=0, row=0, sticky=(S,E))
#Sizegrip bu şekilde tanımlanır.
 
pencere.title("Sizegrip")
pencere.geometry("300x300")
pencere.mainloop()

veya:

#! python3 
# -*- coding: utf-8 -*- 
 
from tkinter import *
import tkinter.ttk as ttk
 
pencere = Tk()
pencere.columnconfigure(0, weight=1)#menümüzün pencereyle
pencere.rowconfigure(0, weight=1)   #hareket etmesini sağlıyoruz

s_g = ttk.Sizegrip(pencere)#genel kullanım bu şekildedir.
s_g.grid(column=999, row=999, sticky=(S,E))

pencere.title("Sizegrip")
pencere.geometry("300x300")
pencere.mainloop()

bu şekilde de kodlayabilirsiniz.

2x serisi içinde şöyle düzenlememiz yeterlidir.

from Tkinter import *
import ttk as ttk

pencere = Tk()
pencere.columnconfigure(0, weight=1)
pencere.rowconfigure(0, weight=1)

s_g = ttk.Sizegrip(pencere)
s_g.grid(column=0, row=1, sticky=(S,E))

pencere.title("Sizegrip")
pencere.geometry("300x300")
pencere.mainloop()

bir önceki yazımdaki tab menü de de aşağıdaki gibi
kullanılabilir.

#! python3
# -*- coding: utf-8 -*- 

from tkinter import *
import tkinter.ttk as ttk
#3x serisinde ttk buşekilde 
#import ediliyor.
from tkinter.ttk import Notebook
#Notebook 3x serisinde
#bu şekilde içe aktarılıyor.

pencere = Tk()
pencere.columnconfigure(0, weight=1)
pencere.rowconfigure(0, weight=1)

tab_menü = ttk.Notebook()

b_farme = Frame(tab_menü, bg="light green")
i_farme = Frame(tab_menü, bg="light green")

b_ent = ttk.Entry(b_farme)
b_ent.grid(row=0, column=0, sticky="news")
b_ent.insert(0, "genel")

i_ent = ttk.Entry(i_farme)
i_ent.grid(row=0, column=0, sticky="w")
i_ent.insert(0, "özel")


tab_menü.add(b_farme, text='genel')
tab_menü.add(i_farme, text='özel')

tab_menü.grid(row=0, column=0, sticky="news")

s_g = ttk.Sizegrip(pencere)
s_g.grid(column=0, row=1, sticky=(S,E))

pencere.title("tab menü ve sizegrip kullanımı")
pencere.geometry("300x300")
pencere.mainloop()

2x serisi içinde yukarıdaki kodlar şu şekilde olabilir.

# -*- coding: cp1254 -*-
from Tkinter import *
import ttk as ttk
#2x serisinde ttk bu şekilde 
#import ediliyor.
from ttk import Notebook
#Notebook 2x serisinde
#bu şekilde içe aktarılıyor.

pencere = Tk()
pencere.columnconfigure(0, weight=1)
pencere.rowconfigure(0, weight=1)

tab_menu = ttk.Notebook()

b_farme = Frame(tab_menu, bg="light green")
i_farme = Frame(tab_menu, bg="light green")

b_ent = ttk.Entry(b_farme)
b_ent.grid(row=0, column=0, sticky="news")
b_ent.insert(0, "genel")

i_ent = ttk.Entry(i_farme)
i_ent.grid(row=0, column=0, sticky="w")
i_ent.insert(0, "özel")

tab_menu.add(b_farme, text='genel')
tab_menu.add(i_farme, text='özel')

tab_menu.grid(row=0, column=0, sticky="news")

s_g = ttk.Sizegrip(pencere)
s_g.grid(column=0, row=1, sticky=(S,E))

pencere.title(u"tab menü ve sizegrip kullanımı")
pencere.geometry("300x300")
pencere.mainloop()

7 Ekim 2014 Salı

Yeni haliyle süt hesaplayıcı 1.1.7

#! python3
# -*- coding: utf-8 -*-
#programlayan : salim_yıldırım 
#proje ismi: süt hesaplayıcı
#version = 1.1.7

from tkinter import *
import tkinter.ttk as ttk
from tkinter.messagebox import*
from tkinter.ttk import Notebook
from TitleFrame import *
import datetime
import time
import sqlite3

pencere = Tk()
vt = sqlite3.connect("süt_kayıt.db")
im = vt.cursor()

metin="""
Süt Hesaplayıcı basit bir S@lim yıldırım uygulamasıdır. S@lim Yıldırım
tarafından üretilmiştir.Ürününüz bol kazancınız çok olsun.
"""          
ayımız = " "
vri_tarih = " "
grgr = []
yem_l = []
bulunduğunuz_ay = " "
def hesapla(event=None):
    global ayımız, vri_tarih, yem_l, kayıt, grgr, bulunduğunuz_ay
    sonuç_entry.delete(0, "end")
    if not Combobox.get():
        showerror("Hata!", "Bulunduğunuz ay'ı belirtmediniz!",
                  detail="Lütfen herhangi bir ay adı giriniz!")
        return "break"
    else:    
        if not Entry["Entry1"].get():
            showerror("Hata!", "Bulunduğunuz yılı belirtmediniz!",
                      detail="Lütfen herhangi bir yıl adı giriniz!")
            return "break"
        else:
            try:
                #grgr grafik için bize günlerin
                #listesini oluşturuyor.
                grgr = []
                yem_l = []
                for i in range(11):
                    grgr.append(int and float(ei_dict["a{}".format(i)].get()))
                for s in range(11):
                    grgr.append(int and float(e1i_dict["a{}".format(s)].get()))
                for z in range(9):
                    grgr.append(int and float(e1s_dict["a{}".format(z)].get()))
                for l in range(8):
                    yem_l.append(int and float(Entry["Entry{}".format(l+1)].get()))
                iefs = sum(grgr)*(yem_l[1]) - ((yem_l[2] * yem_l[3]) + (yem_l[4] * yem_l[5]) + (yem_l[6] * yem_l[7]))                                          
                if iefs > 0:
                    m_tin="Alacak {} tl".format(iefs)                                           
                elif iefs == 0:
                    m_tin = "Başabaş"                
                else:
                    m_tin = "Borç {} tl".format(iefs)
                                                               
                sonuç_entry.insert(0, "Süt Tutarı {} tl, Yem Borcu {} tl, {}"
                                   .format(sum(grgr)*(yem_l[1]), ((yem_l[2] * yem_l[3]) +
                                    (yem_l[4] * yem_l[5]) + (yem_l[6] * yem_l[7])), m_tin))
                                                                     

                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"}
                nummerone =  list(ay.values()).index(Combobox.get())+1
                bulunduğunuz_ay = int("{}{}".format(Entry["Entry1"].get(), nummerone))
                vri_tarih = "{} {} {} {}. {}".format(time.strftime("%d"), ay[(datetime.date.today()).month],
                                                         (datetime.date.today()).year,
                                                         hafta[(datetime.date.today()).weekday()],
                                                         time.strftime("%H:%M:%S"))
       
            except ValueError:
                showerror("Hata!", "Lütfen sadece sayı girin!")
                sonuç_entry.insert(0, "Sonuç ")
            ayımız = Combobox.get()

TitleFrame.w = TitleFrame(pencere, "Süt Kartı")     #TitleFarme'yi bu şekilde
TitleFrame.w.grid(row=2, column=0, pady=5, padx=5)  #oluşturuyoruz.
cerceve1 = TitleFrame.w.getinner()

r = 0
c = 0
ei_dict = {}
while r < 11:
    label = ttk.Label(cerceve1, text="{}.Gün".format(r+1))
    label.grid(row=r, column=c, pady=1, ipady=1)
    ei_dict["a%s"%r] = ttk.Entry(cerceve1, width=10)
    ei_dict["a%s"%r].grid(row=r, column=(c+1), pady=1, ipady=1)
    label = ttk.Label(cerceve1, text="{}.Gün".format(r+12))
    label.grid(row=r, column=(c+2), pady=1, ipady=1)
    ei_dict["a{}".format(r)].bind("", hesapla)
    c += 1
    if c % 1 == 0:
        r += 1
        c = 0
r = 0
c = 0
e1i_dict = {}
while r < 11:
    e1i_dict["a%s"%r] = ttk.Entry(cerceve1, width=10)
    e1i_dict["a%s"%r].grid(row=r, column=(c+3), pady=1, ipady=1)
    e1i_dict["a{}".format(r)].bind("", hesapla)
    c += 1
    if c % 1 == 0:
        r += 1
        c = 0
r = 0
c = 4
e1s_dict = {}
while r < 9:
    label = ttk.Label(cerceve1, text="{}.Gün".format(r+23))
    label.grid(row=r, column=c, pady=1, ipady=1)
    e1s_dict["a%s"%r] = ttk.Entry(cerceve1, width=10)
    e1s_dict["a%s"%r].grid(row=r, column=(c+5), pady=1, ipady=1)
    e1s_dict["a{}".format(r)].bind("", hesapla)
    c += 1
    if c % 1 == 0:
        r += 1
        c = 4
    
#---------yem kartı-------
TitleFrame.w = TitleFrame(pencere, "Yem Kartı")
TitleFrame.w.grid(row=2, column=1, pady=5, padx=5)
cerceve3 = TitleFrame.w.getinner()
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"}

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

Combobox = ttk.Combobox(cerceve3, width=17)
Combobox["values"] =list(ay.values())
Combobox.set(ayi)
Combobox.grid(row=0, column=1, sticky="w", padx=3, pady=1)
Combobox.bind("", hesapla)
def seciminiz(event=None):
    entrya = Combobox.get()
Combobox.bind("<>", seciminiz)

r = 0
c = 0
e_23dict = {}
while r < 11:
    e_23dict["a%s"%r] = Label(cerceve3)
    e_23dict["a%s"%r].grid(row=r, column=c, sticky="w", pady=2)
    c += 1
    if c % 1 == 0:
        r += 1
        c = 0
listi = ["Ay", "Yıl", "Litre Fiyatı", "Süt Yemi", "Fiyatı", 
         "Besi Yemi", "Fiyatı", "Küsbe", "Fiyatı"]
for i in range(9):
    e_23dict["a{}".format(i)]["text"] = listi[int("{}".format(i))]

r = 1
c = 0
Entry = {}
while r < 9:
    Entry["Entry%s"%r] = ttk.Entry(cerceve3)
    Entry["Entry%s"%r].grid(row=(r), column=(c+1), pady=2)
    Entry["Entry{}".format(r)].bind("", hesapla)
    c += 1
    if c % 1 == 0:
        r += 1
        c = 0
Entry["Entry1"].insert(0, yıli)

btn_pen2 = ttk.Button(pencere, width=98, text="Hesapla", command=hesapla)                      
btn_pen2.grid(row=1, column=0, pady=1, columnspan=2)

sonuç_entry = ttk.Entry(pencere,width=98, justify="right")                        
sonuç_entry.grid(row=0, column=0, columnspan=2, pady=6)
sonuç_entry.insert(0, "Sonuç")

kontrol2 = 0
def grafico():
    # fırat hocamızın katkısıdır. 
    global kontrol2
    if grgr == [] or  not Combobox.get()  and not Entry["Entry1"].get():
        cevap = showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\
 doldurduğunuzdan emin olunuz!")
    
    elif len(Entry["Entry1"].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.resizable()
            pencere3.wm_protocol("WM_DELETE_WINDOW", sor1g)
            cw = 670 #genişlik
            ch = 413 #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(12, ch, cw, ch)

            # y düzlemindeki çizgi
            c.create_line(10, 12, 10, ch) 

            for a, b in zip(range(12, ch, 100), range(100, 0, -25)):
                #sol taraftaki kesikli çizgiler
                c.create_line(13, a, 2000, a)
                #kesikli çizgiler üzerindeki değerler
                c.create_text(20, a, text=str(b)) 

            x = 45 
            y = 55
            veriler = grgr
            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("{} yılının {} ayına ait Süt grafiği".format(round(yem_l[0]),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)
        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
        
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
    isa = grgr
    if grgr == [] or not Combobox.get() and not Entry["Entry1"].get():
        showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\
 doldurduğunuzdan emin olunuz!")
    elif len(Entry["Entry1"].get()) < 4:
        showwarning("Uyarı!" , "Lütfen Süt ve Yem Kartı'nı\
doldurduğunuzdan emin olunuz!")
        
    else:
        grgr = []
        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, a_y, y_ı)""")

        try:
            im.execute("""INSERT INTO personel VALUES (
                       ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
                       (bulunduğunuz_ay, yem_l[1], sum(isa), round(yem_l[4]),
                        yem_l[5], round(yem_l[2]), yem_l[3], round(yem_l[6]),
                        yem_l[7], vri_tarih, ayımız, round(yem_l[0])))
                                                                                                                                                                       
            showinfo("Tamamlandı" , "{} yılı {} ayı ile ilgili veri başarıyla kaydedildi!"
                     .format(round(yem_l[0]),ayımız))
            for i in range(11):
                ei_dict["a{}".format(i)].delete(0, "end")
                e1i_dict["a{}".format(i)].delete(0, "end")
            for s in range(9):
                e1s_dict["a{}".format(s)].delete(0, "end")
            for si in range(7):
                Entry["Entry{}".format(si+2)].delete(0, "end")
            sonuç_entry.delete(0, "end")
            sonuç_entry.insert(0, "Sonuç ")
            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.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",]

                anamenu = Menu(pencere, tearoff=0)
                far = Frame(gösterge_paneli)
                far.grid(row=0, column=0, padx=20, pady=20)
                tabPanel = ttk.Notebook(far)
                page = Frame(tabPanel, bg="light green")
                page.grid(row=0, column=2, sticky="news", padx=3, pady=6)
                page1 = Frame(tabPanel, background="white")
                page1.grid(row=0, column=2, sticky="news", padx=3, pady=6)
                page2 = Frame(tabPanel, background="white")
                page2.grid(row=0, column=2, sticky="news", padx=3, pady=6)
                tabPanel.add(page, text='Sonuç')
                tabPanel.add(page1, text='Grafik')
                tabPanel.add(page2, text='Analiz')
                tabPanel.grid(row=0, column=2, ipadx=3, ipady=3)
                
                r = 0
                ci = 0
                e_2dict = {}
                e_23dict = {}
                lis = ["Ay\t\t\t:", "Yıl\t\t\t:", "Toplam Dökülen Süt\t:", "litre fiyatı\t\t:",
                       "Süt Yemi Miktarı\t\t:", "Süt Yemi Fiyatı\t\t:", "Besi Yemi Miktarı\t\t:",
                       "Besi Yemi Fiyatı\t\t:", "Küsbe Miktarı\t\t:", "Küsbe Fiyatı\t\t:",
                       "Toplam Yem Borcu\t:", "Bürüt Kazanç/Borç\t:"]
                for i in range(12):    
                    e_23dict["a%s"%r] = Label(page)
                    e_23dict["a%s"%r].grid(row=r, column=ci+6, sticky="news", padx=3, pady=6)
                    e_2dict["a%s"%r] = ttk.Entry(page, width=50)
                    e_2dict["a%s"%r].grid(row=r, column=(ci+7), sticky="news", padx=3, pady=6)
                    e_2dict["a{}".format(i)].insert(0,"Veri Yok")
                    e_23dict["a{}".format(i)]["text"] = lis[int("{}".format(i))]
                    ci += 1
                    if ci % 1 == 0:
                        r += 1
                        ci = 0
                                
                tv = ttk.Treeview(far, columns=sütunlar,
                                  show="headings")
                tv.column('Ay', width = 100, anchor = 'center')
                tv.column('Yıl', width = 100, anchor = 'center')
                s = ttk.Scrollbar(far, orient=VERTICAL, command=tv.yview)
                s.grid(column=1, row=0, sticky="news")
                tv['yscrollcommand'] = s.set              
                
                for sütun in sütunlar:
                    tv.heading(sütun, text=sütun)
                for değer in sorted(c):
                    tv.insert("", "end", values=(değer[10], değer[11]))

                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):
                    for s in range(12):
                        e_2dict["a{}".format(s)].delete(0, "end")
                    seçilen = tv.selection()
                    silinen = tv.item(item=seçilen)["values"]
                    önceki_id = tv.prev(item=seçilen)#analiz için kullan
                    önceki_txt = tv.item(item=önceki_id)["values"]
                    if seçilen :
                        for i in c:
                            if i[10] == silinen[0] and i[11] == silinen[1]:
                                ief = ((i[2] * i[1])-((i[5]* i[6])+(i[3]*i[4])+(i[7]*i[8])))
                                lisi = [i[10], i[11], i[2], i[1], i[5], i[6], i[3], i[4],
                                        i[7], i[8], (i[5]* i[6])+(i[3]*i[4])+(i[7]*i[8]),
                                        round(abs(ief))] 
                                for i in range(12):
                                    e_2dict["a{}".format(i)].insert(0, lisi[int("{}".format(i))])
                                if ief > 0:
                                    e_23dict["a11"]["text"] = "Kazanç\t\t\t:"                                
                                elif ief == 0:
                                    e_23dict["a11"]["text"] = "alacağınız yok"
                                else:
                                    e_23dict["a11"]["text"] = "Borç\t\t\t:"
                                                   
                def bi_hak():
                    #burası hakkında bölümümüz. kaydettiğimiz verilerin
                    #hakkında bilgilerini 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.wm_attributes("-topmost", 1)
                        hakkında.resizable(False, False)
                        hakkında.wm_protocol("WM_DELETE_WINDOW", sorb)
                        hakkında.columnconfigure(0, weight=1)
                        hakkında.rowconfigure(0, weight=1)
                        seçilen = tv.selection()
                        silinen = tv.item(item=seçilen)["values"]
                        tabPanel = ttk.Notebook(hakkında)
                        page = Frame(tabPanel, background="white")
                        page.grid(row=0, column=2, sticky="w", padx=3, pady=6)
                        tabPanel.add(page, text='Genel')
                        tabPanel.grid(row=0, column=2, padx=3, pady=3)
                        h_et = Label(page, justify="left", wraplength=300, bg="white")
                        h_et.grid(row=0, column=2)
                        if seçilen :
                            for i in c:
                                if i[10] == silinen[0] and i[11] == silinen[1]:
                                    h_et["text"] = """
    Program adı\t:Süt hesaplayıcı_v_1.1.7
    Programlayan\t:S@lim Yıldırım
{3}

    Dosya Adı \t: Süt&Yem Kartı {0} {1}\n
    
    Kayıt Tarihi\t: {2}\n
    
    Değiştirme\t:\t---\n
{3}
    """.format(i[10], i[11], i[9], (54*"_"))      
                    else:
                        pass                      
                        
                def sil():
                    seçilen = tv.selection()
                    silinen = tv.item(item=seçilen)["values"]
                    if seçilen :
                        for i in c:
                            if i[10] == silinen[0] and i[11] == silinen[1]:
                                sor = askyesno("DİKKAT!", "{} yılı {} ayı ile ilgili kaydı silmek istediğinize emin misiniz?"
                                               .format(i[11], i[10]))            
                                if sor:
                                    im.execute("""DELETE FROM personel WHERE ay = ? """, (i[0],) )
                                    vt.commit()
                                    tv.delete(seçilen)
                                    showinfo("Tamamlandı" , "{} yılının {} ayına ait kayıt silindi."
                                             .format(i[11], i[10]))

                tv.bind("", gösterici)
                tv.bind("", sağtık)
                tv.grid(row=0, column=0, sticky='news')

                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)

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)

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.7")
pencere.resizable(False, False)
pencere.wm_protocol("WM_DELETE_WINDOW", sor)
pencere.mainloop()