MongoDB ile çekilmiş value değerlerini listbox nasıl koyabilirim?

Merhabalar,

Baya bir uğraştım fakat yapmak istediğimi yapamadım.

Şimdi olayı kısaca özetliyorum:

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

for x in veriyicek:
    print(x["sinifadin"])

Bu kod ile value değerlerini çektim. Fakat bunu nasıl Listbox'a sırayla yerleştirebilirim bilmiyorum.

Bunu yerleştirdikten sonra listeye sınıf ekleme ve silmede ekleyeceğim. Fakat önce Listboxda gözükme sistemini yapmam gerek.

value değerlerini nasıl Listbox'da gösterebilirim?

Lütfen cahil demeyin, Daha acemiyim ve bu konuyu internette baya araştırdım. Bulamadım.

Teşekkürler.

Tkinter Listbox yazınca karşıma çıkan ilk sayfadan…

from Tkinter import *
import tkMessageBox
import Tkinter

top = Tk()

Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")

Lb1.pack()
top.mainloop()

Dostum bunu zaten biliyorum. Benim sorum mongodb ile çekilen veriyi yerleştirmek.

Parametre olarak çektiğin değeri vereceksin. Yani “Python” yazan yere çektiğin verinin tutulduğu değişkeni bıracaksın, eğer tek değerse. Dizi ise de döngü içerisinde elemanları tek tek bırakabilirsin. Tabi bu dediklerim temel python bilgisi. Eğer temeli bilmeden tkinter ile ilgileniyosan zorlanabilirsin.

Hocam zaten insert yapmayı biliyorum. Fakat for döngüsü ile nasıl birden çok değer yapacağım onu bilmiyorum.

For döngün hazır zaten. Her defasında listeden değerleri de alıyor. Yukarda belirttiğim yerde aldığın her değeri insert etmen yeterli.

Sadece 10 B Çıktı hocam. 9 ATP B çıkmadı.

veriyicek = siniflar.find().sort(“sinifinadi”)

    i = 1

    for x in veriyicek:

        print(x["sinifadin"])

        liste = Listbox()

        # şu kısma insert uygulayacaksın

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

        i = i + 1

        liste.grid(row=1, column=2)

Burada döngü her döndüğünde sıfırdan bir Listbox oluşturup liste’ye atanıyor, eski değerler kayboluyor. Dolayısıyla yalnız en sondaki veri oraya konmuş gibi oluyor. Bu satırı döngü dışına alıp deneyebilirsiniz, öylelikle tek bir Listbox olur istenen veriler ona insert edilir.

1 Beğeni

Ekran Alıntısı

Dediğiniz yöntem oldu teşekkürler. Fakat altında bir tane listbox açıldı. Neden açıldı anlamadım.

Bu sonuca sebebiyet veren kodu paylaşabilir misiniz tam olarak?

liste = Listbox()

def sinifYonetimi():   

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

    i = 1

    for x in veriyicek:

        print(x["sinifadin"])

        # şu kısma insert uygulayacaksın

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

        i = i + 1

        liste.grid(row=1, column=2)

Kodlar bu şekilde :slight_smile:

Bende bir tane çıkıyor şu kodla, belki başka birisi yardımcı olabilir.

from tkinter import *

top = Tk()
liste = Listbox()

def sinifYonetimi():   
    veriler = ["dsa", "w", "32"]

    i = 1
    for veri in veriler:
        liste.insert(i, veri)
        i = i + 1
    
    liste.grid(row=1, column=2)

sinifYonetimi()

top.mainloop()

Hocam kusura bakmayın ben yanlış görmüşüm. Label ile yazılımın genel arkaplan rengi aynı olduğu için ben çift listbox var sanmışım. Meğer ki tekmiş.

Teşekkürler. Bir şey daha sorabilir miyim?

Ekran Alıntısı

Listbox un olduğu kısımlardaki menüde boşluk oluşuyor. Bunun nedeni nedir? Sadece hizasında olan kısımda oluyor.

Menü kodları:

menubuton2 = Button(text="Sınıf Yönetimi", fg="white", bg="#282528", height=4, command=sinifYonetimi)

menubuton3 = Button(text="dasdasdsad", fg="white", bg="#282528", height=4)

menubuton4 = Button(text="saddsad", fg="white", bg="#282528", height=4)

menubuton5 = Button(text="sdadasdm", fg="white", bg="#282528", height=3)

menubuton2.grid(row=1, column=1, sticky="ew")

menubuton3.grid(row=2, column=1, sticky="ew")

menubuton4.grid(row=3, column=1, sticky="ew")

menubuton5.grid(row=4, column=1, sticky="ew")

Boşluk olmasının sebebi nedir? Nasıl çözebilirim?

Tam resim:

Resmen ittiriyor.

Bilemiyorum maalesef

1 Beğeni

Hocam şöyle bir bug buldum.

Ekran Alıntısı

Sol menüden bu sayfaya geldikçe sürekli yeniden insert ediyor. Nasıl tek sefer insert etmesini sağlarım.

Kusura bakmayın çok fazla soru sorduysam.

Estağfurullah, zaten burada bir sürü kişi var yanıt verme potansiyelinde, o yüzden hiçbir sıkıntı yok.

Insert edilmesini sağlayan kod bir şekilde tekrar çağrılıyor, ancak tüm kodu görmeden neden ve nereden kaynaklı söylemek zor.

Şimdi şöyle,

Ben butona command ekledim. Bu command ise sinifYonetimi çalıştırıyor. def sinifYonetimi yani. onun içinde ise bu insert kodları var. O yüzden sürekli yeniden insertliyor.

Kodları şöyle bırakayım:

liste = Listbox()

def sinifYonetimi():   

    sinifyonetimiaciklama = Label(fg="white", bg="#202020")

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

    i = 1

    for x in veriyicek:

        print(x["sinifadin"])

        # şu kısma insert uygulayacaksın

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

        i = i + 1

        liste.grid(row=2, column=2)

menubuton2 = Button(text="Sınıf Yönetimi", fg="white", bg="#282528", height=4, 
command=sinifYonetimi)

Bunu fonksiyonun içine alırsanız her bastığınızda tekrar baştan doldurulur, bu uygunsa yapabilirsiniz.

Bir diğer yol da fonksiyonun içinde liste.size()'a bakıp halihazırda doluysa insert etmemek olabilir. Bunu if ile yapabilirsiniz, fonksiyonu anında terk etmek için ise istediğiniz yere return yazabilirsiniz.

1 Beğeni

Kodu yaptım hocam çok daha iyi oldu. Kişi bir veri eklediğinde yenilenmiş olur.

Teşekkür ederim yardım için.