Pyqt несколько знаков, один слот

#pyqt #signals-slots

#pyqt #сигналы-слоты

Вопрос:

У меня их 16 QDoubleSpinBoxes , и я хочу знать, когда пользователь изменит данные в одном из них. Обратите внимание, что мне все равно, какой из них был изменен, мне нужно только знать, что один из них изменился.

Как я могу это сделать, не записывая 16 разных valueChanged() сигналов / слотов? Возможно ли подключить «универсальный» valueChanged() к слоту?

Большое вам спасибо.

Ответ №1:

Вы можете составить список из своего QSpinBox и использовать для этого цикл for:

 for box in mySpinBoxes:
    box.valueChanged.connect(self.myFunction)
  

Ответ №2:

Вы можете подключить столько сигналов, сколько хотите, к одному и тому же слоту. (Но на самом деле вам нужно будет подключить 16 сигналов по отдельности.)

Ответ №3:

Вы можете подключить все сигналы к одному и тому же слоту, а затем вы можете получить отправителя с помощью QObject.sender метода. Или вам лучше взглянуть на QSignalMapper класс.