2012-05-14 6 views
1

Ну, у меня есть это приложение, в котором есть много виджетов lineEdit (более 20 на самом деле). И в конце этого, у меня есть еще одна строкаEdit, которая должна показывать сумму значений на других виджетах. Но я бы хотел, чтобы он обновлял эту сумму каждый раз, когда изменялось какое-то значение, используя сигнал «textEdited()». Я знаю, что могу сделать это, подключив все эти сигналы виджетов к функции, которая составляет сумму, но я предполагаю, что должен быть другой способ сделать это, чтобы это количество повторного кода не было необходимым. Я прав? Кто-нибудь знает, как это сделать?Подключить один и тот же сигнал от нескольких виджетов к той же функции в PyQt?

Спасибо за консультацию.

ответ

3

Вы уже ответили сами: вам нужно подключить свою функцию к каждому сигналу textEdited(). Вы можете сделать это с очень небольшим количеством кода, когда вы храните все эти виджеты в списке Python:

# ...append all line edits to this list: 
line_edits = [] 

for le in line_edits: 
    le.textChanged.connect(self.mySumFunction) 

Это также имеет то преимущество, что вы можете повторно использовать список, если вы когда-либо необходимо изменить/включить/отключить/clear/... все изменения строки одновременно.

+0

Я не понял трюк списка. Это намного проще, чем написать все подключения по одному. Спасибо вам за помощь. –

Смежные вопросы