Как нормализовать работу динамически созданных QComboBox?

Как нормализовать работу цикла?
Нужно чтобы после выбора элемента в конкретном QComboBox, он выводился в консоль.
После запуска, если нажать на кнопку более двух раз и выбрать элемент в любом QComboBox, кроме нижнего, то в консоль выведет сначала нужный элемент, затем почему-то выводит остальные элементы, вплоть до нижнего.
Помогите с вариантами решения этой проблемы.

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QComboBox, QVBoxLayout


class Main_widget(QWidget):
    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.add_btns = []
        self.act_btn = QPushButton()
        self.act_btn.clicked.connect(self.add_combo)
        self.l = QVBoxLaypout()
        self.l.addWidget(self.act_btn)
        self.setLayout(self.l)
        self.show()

    def add_combo(self):
        self.act_b_ = QComboBox()
        self.act_b_.addItem('-')
        self.add_btns.append(self.act_b_)
        for element in self.add_btns:
            element.activated.connect(lambda: print(element))
        self.l.addWidget(self.act_b_)

if __name__ == '__main__':
    app = QApplication([])
    win = Main_widget()
    app.exec_()

Ответы (1 шт):

Автор решения: S. Nick

Sorry, я плохо понял то, что вы хотите делать далее и добавил немного смысла в ваш код.
Попробуйте и спросите если что-то будет не понятно.

from random import sample
from PyQt5.QtWidgets import QApplication, QWidget, \
    QPushButton, QComboBox, QVBoxLayout


class Main_widget(QWidget):
    def __init__(self):
        super().__init__()

        self.my_num = 0
        self.list_item = [
            'Item1', 'Item2', 'Item3', 'Item4', 'Item5',
            'Item6', 'Item7', 'Item8', 'Item9', 'Item10',             
        ]
        
        self.act_btn = QPushButton('Добавить ComboBox')            
        self.act_btn.clicked.connect(self.add_combo)
        
        self.l = QVBoxLayout(self)
        self.l.addWidget(self.act_btn)
        
    def add_combo(self):
        self.my_num += 1
        _list_item = sample(self.list_item, 5)
        obj_name = f'combo_{self.my_num}'

        # ? зачем вам так много ComboBox ?
        act_b_ = QComboBox(objectName=obj_name)        
        act_b_.addItems(_list_item)
        act_b_.activated.connect(
            lambda index, combo=act_b_: 
            print(f'objectName={obj_name}; index={index} {combo.itemText(index)};'))

        self.l.addWidget(act_b_)        
        

if __name__ == '__main__':
    import sys
    
    app = QApplication(sys.argv)
    win = Main_widget()
    win.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка