Найти - Пользователи
Полная версия: PyQt5 Как привязать события к кнопкам в цикле?
Начало » Python для новичков » PyQt5 Как привязать события к кнопкам в цикле?
1
EiEich
Есть данный цикл
 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, тобишь последний индекс. Можно ли сделать так, чтобы привязка события происходила нормально?
Количество кнопок динамическое
py.user.next
Попробуй
  
lambda n=i: self.delete_account(n)
EiEich
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)
py.user.next
EiEich
в итоге ко всем кнопкам привязываются не цифры 1, 2, 3, 4, 5, а просто 5
А это исправилось?
EiEich
py.user.next
Теперь при нажатии на любую кнопку в консоль выводит “False”
py.user.next
EiEich
Теперь при нажатии на любую кнопку
А на кнопках что написано? Пятёрки или разные цифры?
EiEich
py.user.next
Кнопка без надписей а с иконкой, имеет такой вид:

Я хочу, чтобы при нажатии на кнопку в функцию delete_account() передавался индекс из цикла
При использовании lambda: self.delete_account(i) везде выводился последний индекс
При использовании lambda n=i: self.delete_account(n) везде выводится “False”
py.user.next
Попробуй
  
lambda e, n=i: self.delete_account(n)
EiEich
py.user.next
Попробуй
Работает, спасибо большое!)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB