Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2022 20:35:14

EiEich
Зарегистрирован: 2022-02-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

Есть данный цикл

 for i, item in enumerate(self.config['accounts']):
     i += 1
     self['btn_delete_' + str(i)].clicked.connect(lambda: self.delete_account(i))

Но это не работает так, как планировалось и в итоге ко всем кнопкам привязываются не цифры 1, 2, 3, 4, 5, а просто 5, тобишь последний индекс. Можно ли сделать так, чтобы привязка события происходила нормально?
Количество кнопок динамическое

Офлайн

#2 Фев. 16, 2022 00:59:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

Попробуй

  
lambda n=i: self.delete_account(n)



Офлайн

#3 Фев. 16, 2022 01:05:57

EiEich
Зарегистрирован: 2022-02-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

py.user.next
Попробуй
Возвращает значение “False” из функции

  for i, item in enumerate(self.config['accounts']):
     i += 1
     self.draw_account(item['name'])
     self['btn_delete_' + str(i)].clicked.connect(lambda n=i: self.delete_account(n))
Функция так выглядит:
  def delete_account(self, i):
     print(i)

Офлайн

#4 Фев. 16, 2022 01:25:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

EiEich
в итоге ко всем кнопкам привязываются не цифры 1, 2, 3, 4, 5, а просто 5
А это исправилось?



Офлайн

#5 Фев. 16, 2022 01:26:47

EiEich
Зарегистрирован: 2022-02-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

py.user.next
Теперь при нажатии на любую кнопку в консоль выводит “False”

Отредактировано EiEich (Фев. 16, 2022 01:32:09)

Офлайн

#6 Фев. 16, 2022 01:46:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

EiEich
Теперь при нажатии на любую кнопку
А на кнопках что написано? Пятёрки или разные цифры?



Офлайн

#7 Фев. 16, 2022 01:51:33

EiEich
Зарегистрирован: 2022-02-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

py.user.next
Кнопка без надписей а с иконкой, имеет такой вид:

Я хочу, чтобы при нажатии на кнопку в функцию delete_account() передавался индекс из цикла
При использовании lambda: self.delete_account(i) везде выводился последний индекс
При использовании lambda n=i: self.delete_account(n) везде выводится “False”

Отредактировано EiEich (Фев. 16, 2022 01:54:26)

Прикреплённый файлы:
attachment Снимок экрана 2022-02-16 014827.png (2,0 KБ)

Офлайн

#8 Фев. 16, 2022 02:17:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

Попробуй

  
lambda e, n=i: self.delete_account(n)



Офлайн

#9 Фев. 16, 2022 02:22:46

EiEich
Зарегистрирован: 2022-02-15
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt5 Как привязать события к кнопкам в цикле?

py.user.next
Попробуй
Работает, спасибо большое!)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version