Подключение сигнала к слоту немедленно вызывает излучение сигнала

Я пишу программу с python 3.3.3 и pyqt5. Я подключил много сигналов и слотов без проблем. Это вызывает проблему. Мой код выглядит следующим образом:

   def populateVendorAndModelComboBoxes(self, vendorComboBox, modelComboBox):
    dictVendors = {}
    #for rclass in sorted(list(directory.DRV_TO_RADIO.values())):
    for rclass in list(directory.DRV_TO_RADIO.values()):
        if not issubclass(rclass, chirp_common.CloneModeRadio) and \
                not issubclass(rclass, chirp_common.LiveRadio):
            continue

        if not rclass.VENDOR in dictVendors:
            dictVendors[rclass.VENDOR] = []

        dictVendors[rclass.VENDOR].append(rclass)

    vendorComboBox.addItems(sorted(list(dictVendors)))

    def _vendorChanged(vendorCBox, vendorsDict, modelCBox):

        modelsList = vendorsDict[vendorCBox.currentText()]

        added_models = []

        modelCBox.clear()
        for rclass in modelsList:
            if rclass.MODEL not in added_models:
                added_models.append(rclass.MODEL)
        print("adding to modelCB")
        modelCBox.addItems(sorted(added_models))
        print("Done adding to modelCB")

    vendorComboBox.currentTextChanged.connect(_vendorChanged(vendorComboBox, dictVendors, modelComboBox))
    _vendorChanged(vendorComboBox, dictVendors, modelComboBox)

Этот код заполняет списки поставщиков и моделей. Поле со списком поставщиков заполняется при запуске. Поле со списком модели заполнено различными данными для каждого поставщика. Каждый раз, когда пользователь выбирает другого поставщика, комбинированный список моделей должен обновляться другим списком.

Что должно произойти:

Когда вызывается метод populateVendorAndModelComboBoxes, первая часть программы помещает список поставщиков в выпадающий список поставщиков. Затем будет установлено соединение между сигналом currentTextChanged и слотом _vendorChanged. Затем сначала необходимо вызвать функцию _vendorChanged для настройки комбинированного списка моделей. С этого момента функция _vendorChanged должна вызываться всякий раз, когда пользователь выбирает нового поставщика.

Что происходит:

Когда устанавливается соединение между сигналом currentTextChanged и слотом _vendorChanged, функция _vendorChanged вызывается немедленно. Не следует немедленно вызывать функцию _vendorChanged. Это не происходит ни с одним из моих других подключений сигналов / слотов. Функция _vendorChanged выполняется без ошибки, затем точка выполнения возвращается к оператору vendorComboBox.currentTextChanged.connect ...., и я немедленно получаю ошибку TypeError: аргумент 1 имеет неожиданный тип «NoneType».

Если я закомментирую утверждение, которое устанавливает соединение, программа работает без ошибок. Поле со списком поставщиков заполнено поставщиками, а поле со списком моделей заполнено моделями первого поставщика в списке. Это означает, что код _vendorChanges работает правильно.

У меня два вопроса. Почему оператор connect вызывает немедленное выполнение функции _vendorChanged? В чем причина сообщения об ошибке?

Ответы на вопрос(3)

Ваш ответ на вопрос