güzel ama sıkıntımız şu çektiğimiz verileri ekranda oluştururken problem var. 5 satırlık veri çektiğim de 5 satırlık label oluşturmak istiyorum. Hepsini alt alta. Bunu yapamıyorum.
Sizin önerdiğiniz kod ile programın son hali aşağıdaki gibidir;
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import sqlite3 as sq
from datetime import datetime as dt
import os
class Application(object):
def __init__(self):
self.basliklar_1 = ["TARİH", "TÜR", "KATEGORİ", "AÇIKLAMA", "TUTAR"]
self.basliklar_2 = ["MEVCUT BAKİYE", "TOPLAM GELİR", "TOPLAM GİDER"]
self.klasor_olustur()
self.database()
self.main()
self.verileri_cek()
def klasor_olustur(self):
self.klasorler = os.listdir()
for self.i in self.klasorler:
if self.i == "000veritabani":
break
else:
os.mkdir("000veritabani")
def database(self):
self.con = sq.connect("000veritabani/database.db")
self.cursor = self.con.cursor()
self.cursor.execute("CREATE TABLE IF NOT EXISTS HESAP_HAREKETLERI (TARIH TEXT, TUR TEXT, KATEGORI TEXT, ACIKLAMA TEXT, TUTAR FLOAT, KAYIT_TARIHI TEXT)")
self.con.commit()
def main(self):
self.pencere_1 = Tk()
self.pencere_1.title("GELİR GİDER TAKİP PROGRAMI ## SATEMSOFT")
self.pencere_1.resizable(FALSE, FALSE)
self.kolon = 1
self.satir = 1
for self.i in self.basliklar_1:
self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
self.kolon += 1
self.entry_1 = Entry(self.pencere_1, borderwidth=2)
self.entry_1.grid(row=2, column=1, padx=5)
self.entry_2 = Entry(self.pencere_1, borderwidth=2)
self.entry_2.grid(row=2, column=2, padx=5)
self.entry_3 = Entry(self.pencere_1, borderwidth=2)
self.entry_3.grid(row=2, column=3, padx=5)
self.entry_4 = Entry(self.pencere_1, borderwidth=2)
self.entry_4.grid(row=2, column=4, padx=5)
self.entry_5 = Entry(self.pencere_1, borderwidth=2)
self.entry_5.grid(row=2, column=5, padx=5)
self.button_1 = Button(self.pencere_1, text="KAYDET", width=35, command=self.kaydet).grid(row=3, column=1, columnspan=2)
self.etiket_1 = Label(self.pencere_1, text="SATEMSOFT",width=15).grid(row=3, column=3)
self.button_2 = Button(self.pencere_1, text="TEMİZLE", width=35, command=self.temizle).grid(row=3, column=4, columnspan=2)
self.etiket_1 = Label(self.pencere_1, text="ÖZET TABLO", width=35).grid(row=4, column=1, columnspan=2)
self.logo = PhotoImage(file="satemsoftlogo.png")
self.logo_1 = Label(self.pencere_1, image=self.logo).grid(row=4, column=3)
self.button_3 = Button(self.pencere_1, text="TÜM KAYITLARI SİL", width=35, command=self.verileri_sil).grid(row=4, column=4, columnspan=2)
self.button_4 = Button(self.pencere_1, text="ÇIKIŞ YAP", width=35, command=self.cikis_yap).grid(row=5, column=4, columnspan=2)
self.etiket_1 = Label(self.pencere_1, text="BİLGİLENDİRME >>", width=15).grid(row=6, column=4)
self.etiket_x = Label(self.pencere_1, text="PROGRAM AÇILDI", width=20, fg="green").grid(row=6, column=5)
self.etiket_1 = Label(self.pencere_1, text="TARİH >>", width=15).grid(row=7, column=4)
self.etiket_y = Label(self.pencere_1, text=dt.now(), width=20, fg="green").grid(row=7, column=5)
self.etiket_1 = Label(self.pencere_1, text="-"*45, width=35).grid(row=8, column=1, columnspan=2)
self.etiket_1 = Label(self.pencere_1, text="SON HAREKETLER", width=15).grid(row=8, column=3)
self.etiket_1 = Label(self.pencere_1, text="-"*45, width=35).grid(row=8, column=4, columnspan=2)
self.kolon = 1
self.satir = 9
for self.i in self.basliklar_1:
self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
self.kolon += 1
def verileri_cek(self):
self.satir = 5
self.kolon = 1
for self.i in self.basliklar_2:
self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
self.satir += 1
self.cursor.execute("SELECT SUM(TUTAR) FROM HESAP_HAREKETLERI")
self.data_1 = self.cursor.fetchall()
self.mevcut_bakiye = self.data_1[0][0]
if len(self.data_1) == 0:
self.mevcut_bakiye = "0"
self.etiket_1 = Label(self.pencere_1, text=str(self.mevcut_bakiye)+" TL", width=15).grid(row=5, column=2)
self.cursor.execute("SELECT SUM(TUTAR) FROM HESAP_HAREKETLERI WHERE TUR = ?",("GELİR",))
self.data_2 = self.cursor.fetchall()
self.toplam_gelir = self.data_2[0][0]
if len(self.data_2) == 0:
self.toplam_gelir = "0"
self.etiket_1 = Label(self.pencere_1, text=str(self.toplam_gelir)+" TL", width=15).grid(row=6, column=2)
self.cursor.execute("SELECT SUM(TUTAR) FROM HESAP_HAREKETLERI WHERE TUR = ?",("GİDER",))
self.data_3 = self.cursor.fetchall()
self.toplam_gider = self.data_3[0][0]
if len(self.data_3) == 0:
self.toplam_gider = "0"
self.etiket_1 = Label(self.pencere_1, text=str(self.toplam_gider)+" TL", width=15).grid(row=7, column=2)
self.cursor.execute("SELECT TARIH, TUR, KATEGORI, ACIKLAMA, TUTAR FROM HESAP_HAREKETLERI ORDER BY KAYIT_TARIHI DESC LIMIT 5 OFFSET 0")
self.data_3 = self.cursor.fetchmany(5)
if len(self.data_3) > 1:
self.satir = 10
self.kolon = 1
self.x = 0
for self.i in self.data_3[self.x]:
self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
self.x += 1
self.kolon += 1
else:
pass
def temizle(self):
self.entry_1.delete(0, END)
self.entry_2.delete(0, END)
self.entry_3.delete(0, END)
self.entry_4.delete(0, END)
self.entry_5.delete(0, END)
self.etiket_x = Label(self.pencere_1, text="VERİLER TEMİZLENDİ", width=20, fg="green").grid(row=6, column=5)
self.etiket_y = Label(self.pencere_1, text=dt.now(), width=20, fg="green").grid(row=7, column=5)
def kaydet(self):
self.tarih = self.entry_1.get()
self.tur = self.entry_2.get()
self.kategori = self.entry_3.get()
self.aciklama = self.entry_4.get()
self.tutar = self.entry_5.get()
self.kayit_tarihi = dt.now()
if len(self.tarih) and len(self.tur) and len(self.kategori) and len(self.aciklama) and len(self.tutar) > 0:
self.cursor.execute("INSERT INTO HESAP_HAREKETLERI VALUES (?,?,?,?,?,?)",(self.tarih, self.tur, self.kategori, self.aciklama, self.tutar, self.kayit_tarihi))
self.con.commit()
self.entry_1.delete(0, END)
self.entry_2.delete(0, END)
self.entry_3.delete(0, END)
self.entry_4.delete(0, END)
self.entry_5.delete(0, END)
messagebox.showinfo("BAŞARILI", "VERİLER KAYIT EDİLDİ")
self.verileri_cek()
self.etiket_x = Label(self.pencere_1, text="VERİLER KAYIT EDİLDİ", width=20, fg="green").grid(row=6, column=5)
self.etiket_y = Label(self.pencere_1, text=dt.now(), width=20, fg="green").grid(row=7, column=5)
else:
self.etiket_x = Label(self.pencere_1, text="HATALI VERİ GİRİŞİ", width=20, fg="red").grid(row=6, column=5)
self.etiket_y = Label(self.pencere_1, text=dt.now(), width=20, fg="red").grid(row=7, column=5)
messagebox.showerror("HATA","LÜTFEN VERİLERİ DOĞRU GİRİNİZ")
def verileri_sil(self):
self.con.commit()
self.con.close()
self.soru_1 = messagebox.askquestion("TÜM VERİLERİ SİL","TÜM VERİLERİ SİLMEK İSTEDİĞİNİZE EMİN MİSİNİZ?",icon="warning")
if self.soru_1 == "yes":
os.remove("000veritabani/database.db")
self.etiket_x = Label(self.pencere_1, text="VERİTABANI SİLİNDİ", width=20, fg="red").grid(row=6, column=5)
self.etiket_y = Label(self.pencere_1, text=dt.now(), width=20, fg="red").grid(row=7, column=5)
messagebox.showinfo("BİLGİLENDİRME","PROGRAM KAPATILIYOR, LÜTFEN TEKRAR BAŞLATIN.")
self.con = sq.connect("000veritabani/database.db")
self.con.commit()
self.con.close()
self.pencere_1.destroy()
elif self.soru_1 == "no":
messagebox.showinfo("BİLGİLENDİRME","PROGRAM KAPATILIYOR, LÜTFEN TEKRAR BAŞLATIN.")
self.con = sq.connect("000veritabani/database.db")
self.con.commit()
self.con.close()
self.pencere_1.destroy()
def cikis_yap(self):
self.soru_1 = messagebox.askquestion("ÇIKIŞ YAP","ÇIKIŞ YAPMAK İSTEDİĞİNİZE EMİN MİSİNİZ?",icon="warning")
if self.soru_1 == "yes":
self.con = sq.connect("000veritabani/database.db")
self.con.commit()
self.con.close()
self.pencere_1.destroy()
else:
pass
app = Application()
mainloop()