t-Verilerin Listbox'ta Gorunmesi icin Ne yapabilirim

Merhaba Arkadaslar, kendimi geliştirmek icin tkinterle kücük kücük projeler yapmaya calisiyorum. PyQt5 designerde kücük bir arayüz olusturdum. Şuan için PyQt5 bilmiyorum. Programi bu sekilde yapmak istiyorum. Resimleri paylastim. Yazmis oldugum kodlarda kaydetme, arama ve verilerin kaydedildigi tarih bilgisi kodlamasini yapamadim. Arama yapmak istediğimde karakter yazdikca, o yazdigim karakterlere kadar olan bütün ürünlerin listelemesini nasıl yapabilirim. Girdiğim verilerin tabloya eklenilmesi, kaydettikten sonra, programi kapatip actigimda, tüm verilerin tabloda karsima cikmasini istiyorum. Ayrıca yazdıgım kodlarda gereksiz olanları çıkartıp veya ekleme yaparak daha okunabilir bir hale getirebilirmisiniz.

tkinterde yapmis oldugum proje

PyQt5’te Designerle hazirladigim ve tkinter ile yapmak istedigim bu sekilde.

import sqlite3
from tkinter import *


baglanti = sqlite3.connect("desenler.db")
imlec = baglanti.cursor()
baglanti.commit()

tablo = imlec.execute("""create table if not exists desenler(Desen_Kodu TEXT,Desen_Vurusu INT,Bant_Sayisi INT, 
Bant_Vurusu INT,Ek_Bant INT)""")
baglanti.commit()

def veri_ekle(Desen_Kodu, Desen_Vurusu, Bant_Sayisi, Bant_Vurusu, Ek_Bant):
    veriler = "INSERT INTO desenler VALUES(?,?,?,?,?)"
    imlec.execute(veriler, (Desen_Kodu, Desen_Vurusu, Bant_Sayisi, Bant_Vurusu, Ek_Bant))
    baglanti.commit()


veri_ekle("12b6103u",83450,19,4100,1)
baglanti.close()

pencere = Tk()
pencere.geometry("800x700")
pencere.title("Test v1")
pencere.config(bg="skyblue")


def Ekle():
    dsn = giris1.get()
    liste.insert(END, dsn)
    giris1.delete(0, END)
    giris2.delete(0, END)
    giris3.delete(0, END)
    giris4.delete(0, END)
    giris5.delete(0, END)

def Kaydet():
    pass

def Sil():
    liste.delete(ACTIVE)


etiket1 = Label(pencere, text="Desen Kodu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket2 = Label(pencere, text="Desen Vuruşu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket3 = Label(pencere, text="Bant Sayısı ", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket4 = Label(pencere, text="Bant Vuruşu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket5 = Label(pencere, text="Ek Bant", fg="black", bg="sky blue", font='Arial 12 bold italic')

etiket1.place(x=20, y=10)
etiket2.place(x=20, y=40)
etiket3.place(x=20, y=70)
etiket4.place(x=20, y=100)
etiket5.place(x=20, y=130)

giris1 = Entry(pencere, font="Arial 14 bold italic")
giris2 = Entry(pencere, font="Arial 14 bold italic")
giris3 = Entry(pencere, font="Arial 14 bold italic")
giris4 = Entry(pencere, font="Arial 14 bold italic")
giris5 = Entry(pencere, font="Arial 14 bold italic")
giris6 = Entry(pencere,font="Arial 14 bold italic",width=15)

giris1.place(x=150, y=5)
giris2.place(x=150, y=35)
giris3.place(x=150, y=65)
giris4.place(x=150, y=95)
giris5.place(x=150, y=125)
giris6.place(x=30,y=550,height=30)

buton1 = Button(pencere, text="Desen Ekle", font="Arial 12 bold italic", command=Ekle)
buton2 = Button(pencere, text="Desen Sil", font="Arial 12 bold italic", command=Sil)
buton3 = Button(pencere,text="Kaydet", font="Arial 12 bold italic",width="10", command=Kaydet)
buton4 = Button(pencere, text="Ara", font="Arial 12 bold italic",width=10)

buton1.place(x=150, y=160)
buton2.place(x=270, y=160)
buton3.place(x=500,y=550)
buton4.place(x=220,y=550)

cerceve = Frame(pencere)
cerceve.place(x=20, y=250)

cubuk = Scrollbar(cerceve, orient=VERTICAL)
cubuk2 = Scrollbar(cerceve, orient=HORIZONTAL)

cubuk.pack(side=RIGHT, fill=Y)
cubuk2.pack(side=BOTTOM, fill=X)

liste = Listbox(cerceve, width=65, height=10, font="Arial 14 bold italic", yscrollcommand=cubuk.set,
                xscrollcommand=cubuk2.set)
liste.pack()

cubuk.config(command=liste.yview)
cubuk2.config(command=liste.xview)




pencere.mainloop()

ikinci resimdeki gibi bir görüntüyü tkinter da yapmak istediğini anlıyorum. Eğer doğru anlamışsam listbox yerine treeview kullanmalısın.

Bir de o sekilde deneyeyim. Ilgilendiginiz icin tesekkur ederim.

Desen ekle butonu ile kaydet butonu neleri kaydedecek. Birde liste icerisinde stok sutunu var stok miktarini nasil takip edeceksin.

PyQt5’teki arayüz gibi yapmak istiyorum. Desen kodu,vurusu,bantsayısı,bant vurusu,ek bant kutularini doldurup desen ekle dediğimde, listbox içine her veri kendi bölümüne yerleştirilmesini sağlamak, ürün tanımlama işlemleri bittinde kaydet diyerek verilerin kaydedilmesini, programi actigimda verilerin tabloda gorunmesi saglamaya calisiyorum. stok kısmını sonradan koydum, ama bunu koda dökmedim. su aşamaları bi tamamlayabilsem, benim için toplu güzel bi örnek kaynak olacak. Ya da tkinter yerine PyQt5’mi öğrenmeliyim. işleri daha kolay yapabilmek için.

yani bu sekilde. ama bu sekilde görünmesini program içinde yapmaya calisiyorum.
sql3

from tkinter import *
from tkinter import ttk
import sqlite3


class Database:
    def __init__(self, db):
        self.conn = sqlite3.connect(db)
        self.cur = self.conn.cursor()
        self.cur.execute("""create table if not exists desenler(Desen_Kodu TEXT,Desen_Vurusu INT,Bant_Sayisi INT,
        Bant_Vurusu INT,Ek_Bant INT)""")
        self.conn.commit()


    def veriler(self):
        self.cur.execute("SELECT * FROM desenler")
        tumveri = self.cur.fetchall()
        return tumveri


    def verigirisi(self, desenkodu, desenvurusu, bantsayisi, bantvurusu, ekbant):
        sorgu = "INSERT INTO desenler VALUES (?,?,?,?,?)"
        degerler = (desenkodu, desenvurusu, bantsayisi, bantvurusu, ekbant)
        self.cur.execute(sorgu, degerler)
        self.conn.commit()


    def __del__(self):
        self.conn.close()


db = Database("desenler.db")


pencere = Tk()
pencere.geometry("800x700")
pencere.title("Test v1")
pencere.config(bg="skyblue")


def Ekle():
    """Entrylerden alınan verilerle databaseye kayıt işlemi"""

    db.verigirisi(giris1.get(), giris2.get(), giris3.get(), giris4.get(), giris5.get())
    giris1.delete(0, END)
    giris2.delete(0, END)
    giris3.delete(0, END)
    giris4.delete(0, END)
    giris5.delete(0, END)
    """Eklenen veriden sonra treeview listesinin güncellenmesi"""
    trvliste()

def Kaydet():
    pass

def Sil():
    pass

def trvliste():
    trv.delete(*trv.get_children())
    for veri in db.veriler():
        trv.insert("", END, values=veri)




etiket1 = Label(pencere, text="Desen Kodu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket2 = Label(pencere, text="Desen Vuruşu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket3 = Label(pencere, text="Bant Sayısı ", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket4 = Label(pencere, text="Bant Vuruşu", fg="black", bg="sky blue", font='Arial 12 bold italic')
etiket5 = Label(pencere, text="Ek Bant", fg="black", bg="sky blue", font='Arial 12 bold italic')

etiket1.place(x=20, y=10)
etiket2.place(x=20, y=40)
etiket3.place(x=20, y=70)
etiket4.place(x=20, y=100)
etiket5.place(x=20, y=130)

giris1 = Entry(pencere, font="Arial 14 bold italic")
giris2 = Entry(pencere, font="Arial 14 bold italic")
giris3 = Entry(pencere, font="Arial 14 bold italic")
giris4 = Entry(pencere, font="Arial 14 bold italic")
giris5 = Entry(pencere, font="Arial 14 bold italic")
giris6 = Entry(pencere,font="Arial 14 bold italic",width=15)

giris1.place(x=150, y=5)
giris2.place(x=150, y=35)
giris3.place(x=150, y=65)
giris4.place(x=150, y=95)
giris5.place(x=150, y=125)
giris6.place(x=30,y=550,height=30)

buton1 = Button(pencere, text="Desen Ekle", font="Arial 12 bold italic", command=Ekle)
buton2 = Button(pencere, text="Desen Sil", font="Arial 12 bold italic", command=Sil)
buton3 = Button(pencere,text="Kaydet", font="Arial 12 bold italic",width="10", command=Kaydet)
buton4 = Button(pencere, text="Ara", font="Arial 12 bold italic",width=10)

buton1.place(x=150, y=160)
buton2.place(x=270, y=160)
buton3.place(x=500,y=550)
buton4.place(x=220,y=550)

cerceve = Frame(pencere)
cerceve.place(x=20, y=250)

cubuk = Scrollbar(cerceve, orient=VERTICAL)
cubuk2 = Scrollbar(cerceve, orient=HORIZONTAL)

cubuk.pack(side=RIGHT, fill=Y)
cubuk2.pack(side=BOTTOM, fill=X)

trv = ttk.Treeview(cerceve, height=10, yscrollcommand=cubuk.set, xscrollcommand=cubuk2.set, show="headings")
trv["columns"] = ("1", "2", "3", "4", "5")
trv.pack()

cubuk.config(command=trv.yview)
cubuk2.config(command=trv.xview)

#Treview sutun genişlikleri ayarlanması
trv.column("1", width=100, anchor=CENTER)
trv.column("2", width=100, anchor=CENTER)
trv.column("3", width=100, anchor=CENTER)
trv.column("4", width=100, anchor=CENTER)
trv.column("5", width=100, anchor=CENTER)

#Treeview sütün başlıklarını ayarlama
trv.heading("1", text="Desen Kodu")
trv.heading("2", text="Desen Vuruşu")
trv.heading("3", text="Bant Sayısı")
trv.heading("4", text="Bant Vuruşu")
trv.heading("5", text="Ek Bant")

trvliste()

pencere.mainloop()





desen sil kısmını yapmaya çalış. hatta bir buton daha yapıp yanlış kaydedilen veriyi düzeltmek içinde güncelle butonu yapmakta yarar var.

Tesekkur ederim. Benim pek bilgim yok, yeni yeni ogrenmeye basladim. Eve gectigimde kodlari inceleyecegim.