from tkinter import *
from tkinter import ttk
import sqlite3
class Kütüphane:
database='kütüphane.db'
def __init__(self,pencere):
self.pencere = pencere
self.pencere.resizable(width=FALSE,height=FALSE)
self.pencere.title('Kütüphane Programı')
frame=LabelFrame(self.pencere,text='Kayıt Bölümü')
frame.grid(row=0,column=1)
Etiket1 = Label(frame,text='Kitap Adı:').grid(row=1,column=1)
self.Giris = Entry(frame)
self.Giris.grid(row=1,column=2)
Etiket1 = Label(frame, text='Yazar Adı:').grid(row=2, column=1)
self.yazargiris = Entry(frame)
self.yazargiris.grid(row=2, column=2)
Etiket1 = Label(frame, text='Begenme_Durumu:').grid(row=3, column=1)
self.Begenme_Durumu = Entry(frame)
self.Begenme_Durumu.grid(row=3, column=2)
ttk.Button(frame,text='Yeni Kayıt',command=self.kayit2).grid(row=4,column=2)
self.message = Label(text='',fg='red')
self.message.grid(row=4,column=0)
Etiket1 = Label(frame, text='Kitap Adını Giriniz:').grid(row=1, column=20)
self.Bul_Bölümü = Entry(frame)
self.Bul_Bölümü.grid(row=1, column=21)
ttk.Button(frame, text='Bul',command=self.Bul_alani).grid(row=1, column=25)
#self.tree kısmında columns ifadesi bizim sütüunlarımızın adlarını temsil ediyor
self.tree = ttk.Treeview(height=10,columns=('B','C','D'))
kaydirma = ttk.Scrollbar(orient='vertical', command=self.tree.yview)
self.tree.configure(yscrollcommand=kaydirma.set)
self.tree.grid(row=5,column=0,columnspan=30)
self.tree.heading('#0', text='Kitap No', anchor='w')
self.tree.heading('B',text='Kitap Adı',anchor='w')
self.tree.heading('C', text='Yazar Adı', anchor='w')
self.tree.heading('D', text='Begenme Durumu', anchor='w')
ttk.Button(text='Kayıt Düzenle',command=self.düzenleme).grid(row=6,column=15)
ttk.Button(text='Kayıt Sil',command=self.silme).grid(row=6, column=14)
self.kayit_gorüntü()
def baglanti(self,sira,parametre=()):
with sqlite3.connect(self.database) as con:
cursor = con.cursor()
sira_sonuc=cursor.execute(sira,parametre)
con.commit()
return sira_sonuc
def kayit_gorüntü(self):
kayitlar=self.tree.get_children()
for element in kayitlar:
self.tree.delete(element)
sira = 'Select * from Kitaplar order by Kitap_No desc'
database_sutun = self.baglanti(sira)
for sutun in database_sutun:
#Normalde insert yapınca sütunlar gelmiyor ama sutun[1:4] gibi beliritnce tüm sutunlar geliyor
self.tree.insert('',0,text=sutun[0],values=sutun[1:4])
#......................Yeni kayıtla ilgili bölüme geçiyoruz.......
def kayit(self):
return len (self.Giris.get () ) !=0 and len(self.yazargiris.get()) !=0 and len(self.Begenme_Durumu.get()) !=0
def kayit2(self):
if self.kayit():
sira='insert into Kitaplar values (NULL,?,?,?)'
parametre=(self.Giris.get(),self.yazargiris.get(),self.Begenme_Durumu.get())
self.baglanti(sira,parametre)
self.message['text'] = 'Kayıt {} eklendi'.format(self.Giris.get())
self.message['fg']='blue'
self.Giris.delete(0,END)
self.yazargiris.delete(0,END)
self.Begenme_Durumu.delete(0,END)
else:
self.message['text']='Bilgileri girilmemiş satır mevcut'
self.message['fg'] = 'red'
self.kayit_gorüntü()
#Kayıt Silme işlemini yapıyoruz
def silme(self):
self.message['text'] = ''
try:
self.tree.item(self.tree.selection())['values'][0]
except IndexError as e:
self.message['text'] = 'Kayıt seçiniz'
return
self.message['text'] = ''
isim=self.tree.item(self.tree.selection())['values'][0]
sira='Delete from Kitaplar Where Kitap_Adi = ?'
self.baglanti(sira,(isim, ))
self.message['text'] = '{} Kaydınız silinmiştir'.format(isim)
self.kayit_gorüntü()
def düzenleme(self):
self.message['text']=''
try:
self.tree.item(self.tree.selection())['values'][2]
except IndexError as e:
self.message['text'] = 'Lütfen kayıt seçiniz'
return
name = self.tree.item(self.tree.selection())['values'][0]
eski_Kitap_Yazarı = self.tree.item(self.tree.selection())['values'][1]
eski_Begenme_Durumu = self.tree.item(self.tree.selection())['values'][2]
self.edit_wind=Toplevel ()
self.edit_wind.geometry('325x225+200+200')
self.edit_wind.title('Düzenleme Bölümü')
Label(self.edit_wind,text='Eski Kitap Adı:',).grid(row= 0, column=1)
Entry(self.edit_wind,textvariable = StringVar(self.edit_wind,value=name),state= 'readonly').grid(row=0,column=2)
Label(self.edit_wind, text='Yeni Kitap Adı:', ).grid(row=1, column=1)
new_name=Entry(self.edit_wind)
new_name.grid(row=1,column=2)
Label(self.edit_wind, text='Eski Yazar Adı:', ).grid(row=2, column=1)
Entry(self.edit_wind, textvariable=StringVar(self.edit_wind, value=eski_Kitap_Yazarı), state='readonly').grid(row=2,column=2)
Label(self.edit_wind, text='Yeni Kitap Yazarı:', ).grid(row=3, column=1)
Yeni_Kitap_Yazari = Entry(self.edit_wind)
Yeni_Kitap_Yazari.grid(row=3, column=2)
#3.Değişkenimiz(eski_begenme_durumu) veri tipini text olduğu için onu text olarak belirttik
Label(self.edit_wind, text='Eski Begenme Durumu:', ).grid(row=4, column=1)
Entry(self.edit_wind, textvariable=StringVar(self.edit_wind, value=eski_Begenme_Durumu), state='readonly').grid(row=4, column=2)
Label(self.edit_wind, text='Yeni Begenme Durumu:', ).grid(row=5, column=1)
Yeni_Begenme_Durumu = Entry(self.edit_wind)
Yeni_Begenme_Durumu.grid(row=5, column=2)
A=Button(self.edit_wind,text='Değişiklikleri Kaydet',command = lambda:self.kayıt_düzenleme2(new_name.get(),name,Yeni_Kitap_Yazari.get(),
eski_Kitap_Yazarı,Yeni_Begenme_Durumu.get(),eski_Begenme_Durumu))
A.grid(row=6,column=2,sticky=W)
self.edit_wind.mainloop()
def kayıt_düzenleme2(self,new_name,name,Yeni_Kitap_Yazari,eski_Kitap_Yazarı,Yeni_Begenme_Durumu,eski_Begenme_Durumu):
sira='Update Kitaplar set Kitap_Adi=?,Yazar_Adi=?,Begenme_Durumu=? where Kitap_Adi=? and Yazar_Adi=? and Begenme_Durumu=? '
parametre=(new_name,Yeni_Kitap_Yazari,Yeni_Begenme_Durumu,name,eski_Kitap_Yazarı,eski_Begenme_Durumu)
self.baglanti(sira,parametre)
self.edit_wind.destroy()
self.message['text']='Düzenleme {} yapıldı'.format(name)
self.kayit_gorüntü()
def Bul_alani(self):
a=self.Bul_Bölümü.get()
b='Select Yazar_Adi from Kitaplar where Kitap_Adi=?'
c='Select Begenme_Durumu from Kitaplar where Kitap_Adi=?'
x=self.baglanti(b,(a,))
y=print(self.baglanti(c,(a,)))
self.edit_ek = Toplevel()
self.edit_ek.geometry('325x225+200+200')
self.edit_ek.title('Düzenleme Bölümü')
Label(self.edit_ek, text='Kitap Adı:', ).grid(row=0, column=1)
Entry(self.edit_ek, textvariable=StringVar(self.edit_ek, value=a), state='readonly').grid(row=0, column=2)
Label(self.edit_ek, text='Yazar Adı:', ).grid(row=1, column=1)
Entry(self.edit_ek, textvariable=StringVar(self.edit_ek, value=x), state='readonly').grid(row=1, column=2)
Label(self.edit_ek, text='Begenme Durumu:', ).grid(row=2, column=1)
Entry(self.edit_ek, textvariable=StringVar(self.edit_ek, value=y), state='readonly').grid(row=2, column=2)
if __name__=='__main__':
pencere = Tk()
application = Kütüphane(pencere)
pencere.mainloop()
Arkadaşlar Merhaba class içerisinde oluşturduğum def ile sql ile bağlantı yaptım…Yalnız daha sonra aynı class
içerisinde oluşturduğum başka bir def ile sorgu yapıyorum.Yalnız resimlerde gördüünüz gibi eşitlikte tanımladığım ‘x’ ve ‘y’ üzerinde değerleri eşitleyemiyorum.Çözüm önerisi olan var mı