Tkinter'da oluşturduğumuz data ve Listbox'a veri insert etme hakkında

Öncelikle merhabalar , Kısaca açıklamam gerekirse 3 frame oluşturdum ilk frame’de girilen öğrenci numarası adı ve soyadını listboxa ve veri tabanıma yazıp kaydeden bir tablo oluşturdum.İkinci frame de ders kodu ve ders adını istedim.

Soruma gelirsek 3. frame’de listboxa yazmak istediğim şey ilk listboxtan seçtiğim bir öğrencinin numarası 2.listboxtan seçtiğim bir dersin kodu ve 3.frame deki gireceğim vize ve final notu bilgisi. İlk 2 listboxa eleman eklemek ve silmek için kullandığım kod bu .

Yazdığım tüm kodu yapıştıramadım zaten forumda da yeni olduğum için hareketlerim kısıtlı umarım anlatabilmişimdir vakit ayırıp okuyan ve yardım edenlere teşekkürler.

def Ekleme():
listBox1.insert(END, inputNo.get() + ’ ’ + inputAd.get() + ’ ’ + inputSoyad.get())
baglanti.execute(“INSERT INTO Ogrenciler VALUES(?,?,?)”,
[inputNo.get(), inputAd.get(), inputSoyad.get()])
baglanti.commit()

def Silme():
if tkMessageBox.askyesno(“UYARI”, “Seçili Kayıtları silmek istediğinize emin misiniz?”):
for i in range(listBox1.size(), 0, -1):
if listBox1.select_includes(i):
baglanti.execute(“DELETE FROM Ogrenciler WHERE OgrNo=? AND Ad=? AND Soyad=?”,
listBox1.get(i).split(’ '))
baglanti.commit()
listBox1.delete(i)

Merhaba, hoş geldiniz. Öncelikle aşağıdaki bağlantıyı ziyaret ederek, kodlarınıza nasıl kod görünümü verebileceğinizi öğrenebilirsiniz.

Yanılmıyorsam aşağıdaki kısım yapmak istediğiniz şeyle alakalı. Bu arada soruyu da sormamışsınız aslında.

Birinci ve ikinci listboxlardan seçtiğiniz verileri bir düğme yardımıyla mı yoksa fare’ye çift tıklayarak mı 3. listboxa aktaracaksınız bilmiyorum. Ama her iki işlem için de selection_get() metodunu kullanmanız gerekiyor. 3. framede vize ve final notunu sanırım Entry widgetine gireceksiniz. Bu widgetlerden de zaten get metoduyla veriyi alırsınız.

Tanımlayacağınız bir düğmenin command parametresine yazacağınız fonksiyon ile bu verilerin 3. listboxa aktarılması gerektiğini belirtirsiniz. Veriler de yanılmıyorsam şöyle alınabilir.

def verileri_al():
    veri_1 = listBox1.selection_get()
    veri_2 = listBox2.selection_get()
    vize_notu = vize_entry.get()
    final_notu = final_entry.get()

Bu arada listboxta çoklu sütunlar kullanılamaz. Eğer aldığınız her bir veri için farklı sütunlara ihtiyacınız varsa Treeview widgetini kullanmanız gerekiyor.

Öncelikle teşekkür ediyorum mantık olarak çalıştığını gördüm ancak birkaç sıkıntıyla karşılaştım .Command’e ekleyip verileri girdiğimde aldığım sonuç şu şekilde oldu

   None    veri_1   vize_notu     final_notu

sanırsam ekrana 2 click yapamıyorum 2.click yapıldığında ilkini unutup sadece son tıkladığım değeri ve girdiğim vize ve final notlarını yazıyor bunu nasıl düzeltebilirim .
2.sorum ise dediğim gibi mantıksal olarak çalışıyor ancak acaba ilk listboxdaki veriyi öğrenci numarası adı ve soyadı olarak komple almak yerine sadece ilk değeri yani öğrenci numarasını çekebileceğim bir yol var mı ?
Şu şekilde :

    Öğrenci No   Ders Kodu    vize_notu   final_notu

bind metodunu kullanıyorsunuz sanırım. Bunun yerine button kullanın?

Aldığınız veriyi, split metodu ile parçalayabilirsiniz. Mesela no, ad ve soyad şu şekildeyse: "1 Ali Güneş". Boşluklardan ayırıp ilk elemanı yani no’yu alabilirsiniz.