Сигнал 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 часто может привести к ошибкам, если вы забудете, что будет отправлено значение по умолчанию, даже если вы его не просили. Случай явного лучше, чем неявный...

Другие вопросы по тегам