Tablodan Tabloya Bilgi (Çıktı) Yazdıramıyorum

Bir futbolcu seçimi programı kodlamaya çalışıyorum. Program 2 pencereden oluşuyor. Futbolcuları kriterlerine göre ölçüp bir en iyi sıralamasına sokuyor programım.

Sorunuma gelecek olursak birinci pencerede (ana sayfada) girilen futbolcu isimlerini ikinci pencerede (sonuç penceremde) futbolcu isimlerinin yazıldığı yere yazdıramıyorum.

Keza aynı şey sonuçlar için de geçerli, konsolda sonuç olarak çıktıyı alıyorum fakat o çıktıyı ikinci penceremde (sonuç penceremde) sonuçların yazılı olacağı yere yazdıramıyorum.

İki pencerede de QTableWidget kullandım. Sonuç penceresinde işlem yapılmayacak sadece sonuçlar olacak bunları göstermek için başka bir widget öneriniz varsa onlara da açığım.


Burada hesapla butonuna basınca arkada işlemler yapılıyor ve ikinci pencere açılıyor.

İlk penceredeki isim sütununu ikinci penceredeki futbolcu sütununa ve sonuçlarımı ikinci sütuna yazdırmak istiyorum.

class AnaPencere(QMainWindow,QTableWidget,QTableWidgetItem):

def __init__(self):
    super().__init__()

    self.ui = Ui_AnaSayfa()
    self.ui.setupUi(self)

    self.futbolcular = [[],[]]

    self.ui.pushButton_futbolcuekle.clicked.connect(self.futbolcuekle)
    self.ui.pushButton_futbolcucikar.clicked.connect(self.futbolcucikar)
    self.ui.pushButton_hesapla.clicked.connect(self.hesapla)
    self.ui.pushButton_hesapla.clicked.connect(self.ac_sonuc_penceresi)

    self.topsis_sonuc = SonucPencere()


def futbolcuekle(self):

    satirsayimi = self.ui.tableWidget.rowCount()
    self.ui.tableWidget.insertRow(satirsayimi)
    self.topsis_sonuc.ui_snc.tableWidget_sonuc.insertRow(satirsayimi)
    self.futbolcular.append([])
    self.ui.statusBar.showMessage(" Futbolcu sayısı artırıldı.",1500)


def futbolcucikar(self):

    if self.ui.tableWidget.rowCount() > 2:
        self.ui.tableWidget.removeRow(self.ui.tableWidget.rowCount() - 1)

    if self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() > 2:
        self.topsis_sonuc.ui_snc.tableWidget_sonuc.removeRow(self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() - 1)

    if len(self.futbolcular) > 2:
        self.futbolcular.pop()
        self.ui.statusBar.showMessage(" Futbolcu sayısı azaltıldı.",1500)
    else:
        QMessageBox.information(self, "Bilgi Mesajı", "Futbolcu sayısı en az 2 olmalıdır.")


def hesapla(self):

    weights = np.array([[0.25, 0.55, 0.40, 0.30, 0.20, 0.10, 0.05]])
    criterion_type = ['max', 'max', 'max', 'max', 'max', 'max', 'max']

    satirlistesi = [i for i in (range(self.ui.tableWidget.rowCount()))]

    for i in range(self.ui.tableWidget.rowCount()):
        for j in range(1,self.ui.tableWidget.columnCount()):

            for k in satirlistesi:
                if i == k:
                    a = self.ui.tableWidget.item(i, j)
                    veri = int(a.text())
                    self.futbolcular[i].append(veri)

    #print(self.futbolcular)

    dataset = np.array(self.futbolcular)

    yakinlik_katsayilari = topsis_method(dataset, weights, criterion_type, graph=False)

    for i in range(0, yakinlik_katsayilari.shape[0]):
        print('futbolcu' + str(i + 1) + ' = ', round(yakinlik_katsayilari[i], 4))

    for i in range(self.ui.tableWidget.rowCount()):

        topcu = self.ui.tableWidget.item(i,0)
        topcu_isim = (topcu.text())

        self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(i,0,topcu)
        sonuc_topcu = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i,0)
        sonuc_topcu.setText(topcu_isim)

        sonuc_topcu_isim = (sonuc_topcu.text())
        print(sonuc_topcu_isim)

    for i in range(self.ui.tableWidget.rowCount()):

        yks = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i, 1)
        yks.setText(yakinlik_katsayilari)


    self.ui.tableWidget.clearContents()

def ac_sonuc_penceresi(self):

    self.topsis_sonuc.show()

Burada en sondaki iki for döngüsünü kullandım yazdırmak için fakat ikinci penceremdeki tabloların içine None döndürüyor…

Yardımlarınızı bekliyorum.

Son iki for döngüsünün yerine şu iki for döngüsünü yazdım ve hallettim, takılan olursa diye buraya da yazayım dedim:

veriseti = []

    for r in range(self.ui.tableWidget.rowCount()):
            veriseti.append(self.ui.tableWidget.item(r, 0).text())

    for r in range(self.ui.tableWidget.rowCount()):
        self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(r, 0, QTableWidgetItem(str(veriseti[r])))
        self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(r, 1, QTableWidgetItem(str(yakinlik_katsayilari[r])))
1 Beğeni

Merhabalar, ben pyqt5 öğreniyorum. eğer sizin için de uygunsa tüm kodları paylaşabilir misiniz, incelemek isterim…

Şu anasayfa arayüzüm,

Şu da arayüz için yaptığım bağlantılar.

Bir de hesapla butonuna tıklayınca çıkan sonuç sayfaları var ama oraları henüz yapmadım.

Kolay gelsin…

Çok teşekkürler __ :smiley: