Tkinter Listboxtan seçilmiş veriyi mongodb'den silemiyorum

Merhabalar,

liste = Listbox()

def SinifYonetimi_SinifEkle():

    sinifadiyazma.get()

    gg = sinifadiyazma.get()

    liste.insert(22, gg)

    siniflar.insert({"sinif": gg})

    

sinifeklebuton = Button(text="Sınıf Ekle", command=SinifYonetimi_SinifEkle)

aa = SinifYonetimi_SinifEkle

def sinifYonetimi_SinifSil():

    secilmis = liste.curselection()

    liste.delete(secilmis)

    siniflar.delete_many({"sinif": secilmis}) # Burası

def sinifYonetimi():   

    veriyicek = siniflar.find().sort("sinif")

    i = 1

    for x in veriyicek:

        print(x["sinif"])

        liste.insert(i, x["sinif"])

        i = i + 1

        liste.configure(width=50)

    sinifeklebuton.grid(column=3, row=5, sticky=E)# Buton

    liste.grid(column=2, columnspan=3)

    silbuton = Button(text="sil", command=sinifYonetimi_SinifSil)

    silbuton.grid(column=2, columnspan=3)

    silbuton.configure(width=10, height=1)

Yukarıdaki kodda sınıf ekleme sistemini ve Listbox güncelleme sistemini yaptım fakat seçilmiş itemi silmeyi bir türlü yapamadım. Listeden siliyor ama mongodb’den sildiremedim.

Ben işaretlediğim(# Burası) yazan yerde hata olduğunu düşünüyorum. Hata tam olarak nerede?

@dildeolupbiten hocam bilginiz yok mu?

Burada secilmis, (0, ) gibi bir tuple nesnesi döndürür. liste’den satır silerken de bu tuple nesnesi kullanılır. Ancak siz sonra siniflar.delete_many({"sinif": secilmis}) kodu ile {"sinif": (0, )} gibi bir nesneyi silmeye kalkıyorsunuz ve bu yüzden hata alıyorsunuz.

listbox’ın seçilen satırındaki değeri almak için liste.get(secilmis) yazmanız lazım. Bu ifadeyi bir değişkenin değeri haline getirirseniz - örneğin silinecek = liste.get(secilmis) - ve sonra da silme işlemi için siniflar.delete_many({"sinif": silinecek}) yazarsanız sorun çözülür diye tahmin ediyorum.

Teşekkür ederim, Çalıştı.

Gecen bahsettigim sorunu parcalara ayiramama problemi (MongoDB ile çekilen veri Listbox da buga giriyor - #2 by aib) burada da var.

Listbox’tan secilen veri mongodb’den silinemiyorsa bunun sebebi cok buyuk ihtimalle bu ikisinden biri:

  1. Listbox’tan secilen veri yanlis
  2. mongodb’den silinmeye calisan veri yanlis

Bu durumlardan hangisiyle karsi karsiya oldugumuzu anlamak python gibi bir dilde cok kolay; ve tek satirlik/yarim dakikalik bir ugrasla problem uzayini yariya indiriyor.

Bunu yapmayi ogrenmeden karmasik sistemler yazman mumkun degil.

Çoktan çözdüm hocam. Sağolun.

Ben baska (ve bariz bir sekilde, cozulmemis) bir sorundan bahsediyordum. Neyse.

1 Beğeni