Python Tkinter fonksiyonun sınıfından çalışınca sorun yok, ana class için sorunlu

Merhaba tekrardan;
Sabah bir sorun paylaşmıştım sağollsun bir arkadaş çözüm konusunda bilgi verdi;
Sabah ki konu

Ve benim fonksiyona uyarladığımda bir sorunum var. Fonksiyon şu şekilde;

 def module():
        icerik1 = tk.Tk()
        icerik1.title("2 Personel Hesaplama")
        icerik1.geometry('500x350+750+350')
        icerik1.resizable(width="FALSE", height="FALSE")
        liste2 = []
        kriterlist2 = ["MO", "YP", "SK", "TY", "BB", "REF", "TED", "PGS", "KDS", "YSE", "OYB", "KB"]
        for i in range(len(kriterlist2)):
            liste2.append(Label(icerik1, text=kriterlist2[i], font=('arial', 8, 'bold'), bg="green", fg="white"))

        sayac = 0
        for i in range(1, 13):
            liste2[sayac].place(x=70 + i * 30, y=70)
            sayac += 1
        personel = []
        girdiler = []

        x2 = 0
        y2 = 0
        satir, sutun = (2, 12)
        for i in range(satir):

            personel.append([])
            girdiler.append([])
            for j in range(sutun):
                
                personel[i].append(StringVar())
                girdiler[i].append(Entry(icerik1, textvariable=personel[i][j], width=3))
                girdiler[i][j].place(x=100 + x2, y=100 + y2)
                x2 += 30


            y2 += 30
            x2 = 0
        matrix = []
        def solve():
            matrix = []

            for i in range(satir):
                matrix.append([])
                for j in range(sutun):
                    matrix[i].append(personel[i][j].get())

            print(matrix)

            weights = [0.3599, 0.05917, 0.1459, 0.36, 0.0123, 0.007, 0.0778, 0.1619, 0.0225, 0.0123, 0.0749, 0.0304]
            criterion = [True, True, True, True, True, True, True, True, True, True, True, True]

            value2 = TOPSIS(matrix, weights, criterion)

            value2.hesaplama()

            information2 = tk.Tk()
            information2.title("sonuclar")
            information2.geometry('200x200+650+350')
            list2 = []

            list2 = value2.alternatifsiralamasi()
            informationscreen2 = tk.Label(information2, text=" SONUÇ KISMI ", bg="green", fg="white")
            informationscreen2.pack()
            sonucbilgisi2 = tk.Label(information2, text="En iyi alternatif PERSONEL{}: 'dir.  ".format(list2[0]),
                                     bg="green", fg="white")
            siralamabilgisi2 = tk.Label(information2,
                                        text="Sıralama şu şekildedir;\n PERSONEL {} \n PERSONEL {}  'dir.".format(
                                            list2[0], list2[1]), bg="green", fg="white")
            sonucbilgisi2.pack()
            siralamabilgisi2.pack()


            print(matrix)
        tip1 =tk.Label(icerik1,text="Personel1 =: ", font=('arial', 9, 'bold'), bg="white")
        tip1.place(x=15,y=100)
        tip2 =tk.Label(icerik1,text="Personel2 =: ", font=('arial', 9, 'bold'), bg="white")
        tip2.place(x=15,y=130)

        buton = tk.Button(icerik1,text="HESAPLA",command=solve)
        buton.place(x=220,y=220)
        icerik1.mainloop()

Kod bu şekilde, bunu kendi olduğu class icerisinde x.module() şeklinde çalıştırdığım zaman sorunsuz olarak verileri alıyor ve işlemi yapıyor. Fakat şöyle bir sorun var arayüzü oluşturduğum classtan cekmeye calıstığımda verileri girmiyor. Nedenini bilen var mıdır aranızda ?
Aşağıya tam hallerinin haste sitesinden ekliyorum.

Personel fonksiyonlarını burada tutmak istedim

https://hastebin.com/ucilaqahoc.apache

Topsis fonksiyonu burda

https://hastebin.com/axejofazuz.rb

Arayüziçin oluşturduğum kısım

https://hastebin.com/qiyekijada.kotlin

Hatayı göstermek adına şöyle ifade edebilirim eğer;

information.module()

Program çalışıyor ve istenen verileri çekiyor ;

[[‘4’, ‘4’, ‘5’, ‘4’, ‘3’, ‘4’, ‘5’, ‘5’, ‘5’, ‘5’, ‘4’, ‘4’], [‘5’, ‘5’, ‘4’, ‘4’, ‘4’, ‘4’, ‘3’, ‘3’, ‘3’, ‘3’, ‘3’, ‘3’]]
aranılan şey [0.45526861 0.54473139]
aranılan 2 [0.54473139 0.45526861]
ALTERNATİFLER SIRALAMASI : [1 2]

aranılan şey [0.45526861 0.54473139]
aranılan 2 [0.54473139 0.45526861]

eğer şöyle denersem ;

personel2_button = tk.Button(interface, text=“2 PERSONEL HESAPLA”, fg=“green”, width=18, cursor=“hand2”,command= lambda: information.module())
personel2_button.pack()

şu şekilde bir hata alıyorum ;

[[‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’], [‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]]
Exception in Tkinter callback
Traceback (most recent call last):
File “File C … … . \Python\Python38\lib\tkinter_init_.py”, line 1883, in call
return self.func(*args)
File C … … . \informationclass.py", line 82, in
buton = tk.Button(icerik1,text=“HESAPLA”,command=lambda : solve())
File C … … . \informationclass.py", line 55, in solve
value2 = TOPSIS(matrix, weights, criterion)
File C … … . \topsisclass.py", line 14, in init
self.degerlendirme_matrisi = np.array(degerlendirme_matrisi,dtype=“float”)
ValueError: could not convert string to float: ‘’

pack veya place ikisiyle de denedim olmuyor , ana yerden cağırdığımda olmuyor abi :smiley:



""'ler ile numpy array’ı oluşturmaya çalışıyordunuz.

Hocam işte entryler calışmadığı için o matrix listesi boşa düşüyor , fonksiyonun olduğu class çağırırsam sorun olmuyor ama

[[‘4’, ‘4’, ‘5’, ‘4’, ‘3’, ‘4’, ‘5’, ‘5’, ‘5’, ‘5’, ‘4’, ‘4’], [‘5’, ‘5’, ‘4’, ‘4’, ‘4’, ‘4’, ‘3’, ‘3’, ‘3’, ‘3’, ‘3’, ‘3’]]

bu şekilde alıyor verileri.

fakat arayüz classından çalıştırdığımda ise böyle bir boş liste ile karşılaşıyorum :slight_smile:

Peki bizden ne istiyorsunuz? Sorunun sebebini bulmuşsunuz işte, düzeltmeye çalışın.

Hocam sorunun sebebini buldum , ama çözemiyorum olmuyor onun için buraya sormuştum aslında :slight_smile:

1 Beğeni

Soruna alternatif çözüm olarak sadece sunu bulabildim ;
**

Personel2 Hesaplama kısmına tıklattıran fonksiyona , interface.destroy ekledim. Böylelikle onu açtığımızda interface gidiyor ve değerleri çekebiliyorum.

**