В сообщении об ошибке говорится, что self.changeProject("%s")
для одного из значений, которое вы подставляете для этого %s
, возвращает None
. Предположительно, вы хотели, чтобы этот метод возвратил что-то другое?
Невозможно помочь вам с задачей дальнейшей отладки changeProject
, конечно, не увидев код для нее. Однако, вы можете, например, разделить вызов на что-то вроде (как только вы избавитесь от этой тонны руководителей согласно совету lazy1):
cp_result = self.changeProject(name)
if cp_result is None:
logging.error('changeProject(%s) is None!', name)
else:
logging.info('changeProject(%s) is OK (%r)', name, cp_result)
button.clicked.connect(cp_result)
Таким образом, вместо бесполезной попытки «подключиться к None», вы увидите все имена, вызывающие неожиданное возвращаемое значение в журнале ошибок, а затем сможете продолжить отладку на основе этой информации. Однако, скорее всего, ваша ошибка может стать очевидной, если взглянуть на источник changeProject
.
Редактировать : аргумент connect
, конечно, исходит от changeProject
(а не от другого connect
! -) - исправлен фрагмент соответственно.