Python - Veritabanından Çekilen Verileri Tkinter'da Yazdıramıyorum

Merhaba,

HESAP_HAREKETLERİ isminde bir sqlite3 tablom var. Bu tablodan verileri çekip pencereye göstermek istedim.

Şu şekilde bir kod yazdım;

self.cursor.execute("SELECT TARIH, TUR, KATEGORI, ACIKLAMA, TUTAR FROM HESAP_HAREKETLERI")
        self.data_3 = self.cursor.fetchall()

        if len(self.data_3) > 1:
                

            x = 0
            self.satir = 10
            self.kolon = 1
            
            for self.i in self.data_3[x]:

                self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
                x += 1
                self.kolon += 1

                if self.kolon == 6:
                    self.kolon = 1
        else:
            pass

Kodu bu şekilde çalıştırdığım zaman tabloda bulunan verilerden sadece ilk kaydı alıyor. Kafam durmuş durumda, doğru algoritmayı bir türlü yazamıyorum. Öncelikle yapmak istediğim, veritabanında kayıtlı olan son 5 kaydı çekip ekrana bastırmak. Yardımcı olur musunuz?

Kodda self tanimli degil. Girintileme de bozuk.

fetchall'un sonucunu ve loop’un hangi degiskenlerle, Label fonksiyonuna ne vererek calistigini yazman lazim.

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")
        self.data_3 = self.cursor.fetchall()

        if len(self.data_3) > 1:
                

            x = -1
            self.satir = 10
            self.kolon = 1
            
            for self.i in self.data_3[x]:

                self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
                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()

logo = satemsoftlogo logoismi = satemsoftlogo dosya türü = .jpg

kodlarım bu şekilde

1 Beğeni

Veriyi kayıt edildiği tarihe göre büyükten küçüğe sıralayor ve en büyük 5 tanesini seçiyor.

    def veri_göster(self):
        self.cursor.execute("""SELECT * FROM HESAP_HAREKETLERI
        ORDER BY KAYIT_TARIHI DESC LIMIT 5 OFFSET 0""")
        son_5_veri = self.cursor.fetchmany(5)
        self.yeni_pencere = Tk()
        for veri in son_5_veri :
            new_lbl = Label(self.yeni_pencere, text = veri)
            new_lbl.pack()

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

Pencerenin en altında son 5 hareketi dizmek istiyorum. Bu bir türlü olmuyor. Bunu yapacak algoritmayı oluşturamadım. Çok basit bir şey muhtemelen ama beynim durdu.

Demek istediğin bu sanırım, altta o son 5 satırı güncel olarak görmek. Bunun için sadece main() altında pencereyi 2 adet frame’e böldüm, ikinci çerçeveye de satırları yazdırdım.

        self.cerceve1 = Frame(self.pencere)
        self.cerceve2 = Frame(self.pencere)

        self.cerceve1.pack(side = TOP)
        self.cerceve2.pack(side = BOTTOM, pady = 5)

Kaydet butonuna bastıktan sonra kendini yenilemesi için self.veri_yenile()yi kaydetin altına yazabilirsin. Döngüyle sürekli yenilemesi gereksiz olur dedim.

    def veri_göster(self):
        self.cursor.execute("""SELECT * FROM HESAP_HAREKETLERI
        ORDER BY KAYIT_TARIHI DESC LIMIT 5 OFFSET 0""")
        self.secili_veriler = self.cursor.fetchmany(5)

        self.new_lbl = Label(self.cerceve2, text = self.secili_veriler[0])
        self.new_lbl2 = Label(self.cerceve2, text = self.secili_veriler[1])
        self.new_lbl3 = Label(self.cerceve2, text = self.secili_veriler[2])
        self.new_lbl4 = Label(self.cerceve2, text = self.secili_veriler[3])
        self.new_lbl5 = Label(self.cerceve2, text = self.secili_veriler[4])
        
        self.new_lbl.pack()
        self.new_lbl2.pack()
        self.new_lbl3.pack()
        self.new_lbl4.pack()
        self.new_lbl5.pack()

    def veri_yenile(self):
        self.cursor.execute("""SELECT * FROM HESAP_HAREKETLERI
        ORDER BY KAYIT_TARIHI DESC LIMIT 5 OFFSET 0""")
        self.secili_veriler = self.cursor.fetchmany(5)
        
        self.new_lbl.config(text = self.secili_veriler[0])
        self.new_lbl2.config(text = self.secili_veriler[1])
        self.new_lbl3.config(text = self.secili_veriler[2])
        self.new_lbl4.config(text = self.secili_veriler[3])
        self.new_lbl5.config(text = self.secili_veriler[4])

Bir de önceden self.pencere içinde olan tüm widgetlar şu an self.çerçeve1de onu da ayarlaman gerek

Mevzu bu şekilde tam istenilen tarzda olmuyor çünkü demet halinde çektiği için içideki elemanları listeyi olduğu şekilde parantezli virgüllü çıkarıyor. Bu da görüntüde hiç hoş durmuyor.

Peki ben ne diyorum? Şu şekilde bir görüntü istiyorum.

TARİH TÜR KATEGORİ AÇIKLAMA TUTAR
21.10.2021 GELİR MAAŞ MESLEK 300
22.10.2021 GELİR EK GELİR EK İŞ 15
23.10.2021 GELİR ALACAK BORÇ ÖDEMESİ 27
24.10.2021 GİDER MARKET MUTFAK -490
25.10.2021 GİDER KİRA EV -700

Şu şekilde istemiyorum;

TARİH TÜR KATEGORİ AÇIKLAMA TUTAR
{21.10.2021, GELİR, MAAŞ, MESLEK, 300}
{21.10.2021, GELİR, MAAŞ, MESLEK, 300}
{21.10.2021, GELİR, MAAŞ, MESLEK, 300}
{21.10.2021, GELİR, MAAŞ, MESLEK, 300}
{21.10.2021, GELİR, MAAŞ, MESLEK, 300}

Neden bu şekilde istemiyorum? Çünkü listeleme, tablolaştırma mantığına aykırı. Görsel olarak çok kötü

        self.data_3 = self.cursor.fetchmany(5)
        print(self.data_3)
[('tarih3', 'tur1', 'kategori2', 'acik6', 60.0), ('tarih2', 'tur2', 'kategori2', 'acik5', 50.0), ('tarih2', 'tur1', 'kategori1', 'acik4', 40.0), ('tarih1', 'tur1', 'kategori1', 'acik3', 30.0), ('tarih1', 'tur2', 'kategori1', 'acik2', 20.0)]
                print(f"Label({self.pencere_1}, text={self.i}, width=15).grid(row={self.satir}, column={self.kolon})")
                self.etiket_1 = Label(self.pencere_1, text=self.i, width=15).grid(row=self.satir, column=self.kolon)
Label(., text=tarih3, width=15).grid(row=10, column=1)
Label(., text=tur1, width=15).grid(row=10, column=2)
Label(., text=kategori2, width=15).grid(row=10, column=3)
Label(., text=acik6, width=15).grid(row=10, column=4)
Label(., text=60.0, width=15).grid(row=10, column=5)

Gorulebildigi uzere sadece tek kaydin kolonlari uzerinden geciliyor.

Icice iki loop lazim, disaridaki kayitlarin (satirlarin) uzerinden gececek.

3 Beğeni

Tam da dediğim gibi oldu. :sweat_smile: Teşekkür ederim. İç içe 2 döngü yazarak durumu çözdüm.

1 Beğeni