Сигнал PySide с аргументом
QGroupBox
имеет сигнал clicked
который имеет необязательный checked
параметр. Предположим, я пытаюсь подключить слот к нему внутри некоторого класса, например так: box.clicked.connect(self.func)
поэтому объявление слота должно быть def func(self, checked)
, но func
вызывается только с одним аргументом. Как мне получить желаемое поведение func
вызывается с самим собой и необязательным checked
аргументы?
1 ответ
Поведение сигналов с необязательными параметрами по умолчанию отличается между PyQt и PySide. В PyQt параметр по умолчанию всегда отправляется, но в PySide вы должны явно запросить его:
box.clicked[bool].connect(self.func)
Я бы сказал, что это гораздо лучший выбор дизайна, поскольку поведение PyQt часто может привести к ошибкам, если вы забудете, что будет отправлено значение по умолчанию, даже если вы его не просили. Случай явного лучше, чем неявный...