QCheckBox Bir den Fazla Secimi Ekrana Yazdirma Hk

Arkadaslar Merhaba, Secilen ürünü Ekrana yazdırabiliyorum. Peki 1’den fazla secim olduğunda, bunu ekrana nasıl yazdırabilirim. Mesela Lahmacun Secildi, içecek olarakda ayran. Ben bu ikisini ekrana;
Cantik + Ayran olarak nasıl yazdırabilirim.

import sys

from PySide6.QtWidgets import QMainWindow,QCheckBox,QApplication,QVBoxLayout,QLineEdit,QWidget,QLabel
from PySide6.QtGui import *

class anaPencere(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200,200,400,300)
        self.setWindowTitle("CheckBox")
        self.checkbox()


        self.show()

    def checkbox(self):
        self.check1 = QCheckBox("Lahmacun",self)
        self.check2 = QCheckBox("Pide",self)
        self.check3 = QCheckBox("Cantik",self)
        self.check4 = QCheckBox("Cola",self)
        self.check5 = QCheckBox("Ayran",self)

        self.check1.move(10,20)
        self.check2.move(10,40)
        self.check3.move(10,60)
        self.check4.move(10,80)
        self.check5.move(10,100)

        self.lblYaziEkrani = QLabel(self)
        self.lblYaziEkrani.setText("")
        self.lblYaziEkrani.move(10,140)

        self.vBox = QVBoxLayout(self)
        self.vBox.addWidget(self.check1)
        self.vBox.addWidget(self.check2)
        self.vBox.addWidget(self.check3)
        self.vBox.addWidget(self.check4)
        self.vBox.addWidget(self.check5)
        self.vBox.addWidget(self.lblYaziEkrani)
        self.vBox.addStretch()


        self.setLayout(self.vBox)

        self.check1.toggled.connect(self.secim)
        self.check2.toggled.connect(self.secim)
        self.check3.toggled.connect(self.secim)
        self.check4.toggled.connect(self.secim)
        self.check5.toggled.connect(self.secim)

    def secim(self):
        secim = ""
        if self.check1.isChecked():
            secim = self.check1.text()

        elif self.check2.isChecked():
            secim = self.check2.text()

        elif self.check3.isChecked():
            secim = self.check3.text()

        elif self.check4.isChecked():
            secim = self.check4.text()

        elif self.check5.isChecked():
            secim = self.check5.text()

        self.lblYaziEkrani.setText("Seçtiğiniz Ürünler:\n" + secim)
        self.lblYaziEkrani.setFont(QFont("arial", 12, QFont.Bold))




def pencere():
    app = QApplication()
    pen = anaPencere()
    app.exec()

pencere()

elif yerine if kullanabilirsiniz.

    def secim(self):
        secim = ""
        if self.check1.isChecked():
            secim += self.check1.text()+"\n"

        if self.check2.isChecked():
            secim += self.check2.text()+"\n"

        if self.check3.isChecked():
            secim += self.check3.text()+"\n"

        if self.check4.isChecked():
            secim += self.check4.text()+"\n"

        if self.check5.isChecked():
            secim += self.check5.text()+"\n"

        self.lblYaziEkrani.setText("Seçtiğiniz Ürünler:\n" + secim)
        self.lblYaziEkrani.setFont(QFont("arial", 12, QFont.Bold))


kısaltmak isterseniz

    def secim(self):
        secim = ""
        for i in range(1, 6):
            if getattr(self, f"check{i}").isChecked():
                secim += getattr(self, f"check{i}").text()+"\n"
        self.lblYaziEkrani.setText("Seçtiğiniz Ürünler:\n" + secim)
        self.lblYaziEkrani.setFont(QFont("arial", 12, QFont.Bold))

bunun gibi döngü kurabilirsiniz.

Tesekkur ederim, eve gectigimde kodlari inceleyecegim.

Hocam kodun 2 halide aynı işlemi gördü. for föngüsü daha cazip geldi. az kodla aynı işlemi görüyor. Tabi 2 kod arasında bunun en sağlıklısı hangisi bilmiyorum.
Getattr ilk defa karşıma çıktı, ya da ben hatırlayamadım. Biraz araştırdım ama anlamadım. Tam olarak ne işe yarıyor, ne yapmak istersek bu kodu kullanmalıyız. Döngüye soktugumuz kod kısmını yorum satırına alıp detaylı açıklayabilirmisin. Fikir yürüterek kafamda yanlış bilgi edinmeyeyim.

Hangisi daha sağlıklı açıkcası bende bilmiyorum. Getattr ye gelecek olursak getattr bir nesneyi çekmeye yarıyor burada self, f"check{i}" diyerek ilk turda self.check1 ikinci turda self.check2 … yi elde ediyoruz.
Python dosyasından veri çekmek için kullanılabilir

import veriler

name = getattr(veriler, "name")
print(name)

diyerek veriler.py nin içindeki name değişkenini elde edebiliriz.

class sinif:
    def __init__(self):
        self.name = "S"
s = sinif()
print(getattr(s,"name"))

veya sınıflarda kullanabiliriz bu şekilde yaparsak S diye çıktı elde ederiz.

ilginiz için teşekkür ederim. arşive koyayım. Bunların hepsi bana birer kaynak.