Conectar o sinal ao slot imediatamente faz com que o sinal seja emitido

Estou escrevendo um programa com python 3.3.3 e pyqt5. Conectei muitos sinais e slots sem nenhum problema. Este está causando um problema. Meu código a seguir:

   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)

Esse código preenche caixas de combinação com fornecedores e modelos. A caixa de combinação do fornecedor é preenchida na inicialização. A caixa de combinação do modelo é preenchida com dados diferentes para cada fornecedor. Sempre que o usuário escolhe um fornecedor diferente, a caixa de combinação do modelo deve ser atualizada com uma lista diferente.

O que deve acontecer:

Quando o método populateVendorAndModelComboBoxes é chamado, a primeira parte do programa coloca a lista de fornecedores na caixa de combinação do fornecedor. Em seguida, será feita uma conexão entre o sinal currentTextChanged e o slot _vendorChanged. Em seguida, a função _vendorChanged deve ser chamada inicialmente para configurar a caixa de combinação Model. A partir de então, a função _vendorChanged deve ser chamada sempre que o usuário escolher um novo fornecedor.

O que está acontecendo:

Quando a conexão é estabelecida entre o sinal currentTextChanged e o slot _vendorChanged, a função _vendorChanged é chamada imediatamente. Não deve chamar imediatamente a função _vendorChanged. Isso não acontece com nenhuma das minhas outras conexões de sinal / slot. A função _vendorChanged é executada sem erro, o ponto de execução volta para a instrução vendorComboBox.currentTextChanged.connect .... e recebo imediatamente um erro TypeError: o argumento 1 tem um tipo inesperado 'NoneType'.

Se eu comentar a declaração que faz a conexão, o programa funcionará sem erros. A caixa de combinação do fornecedor é preenchida com fornecedores e a caixa de combinação do modelo é preenchida com modelos do primeiro fornecedor da lista. Isso indica que o código _vendorChanges está funcionando corretamente.

Eu tenho duas perguntas. Por que a instrução connect faz com que a função _vendorChanged seja executada imediatamente? Qual é a causa da mensagem de erro?

questionAnswers(3)

yourAnswerToTheQuestion