Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 17
1

Bind для массива

18.08.2019, 12:46. Показов 1439. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Подскажите, пожалуйста, почему при щелчке на любой label функция open_url открывает страницу с последним url в списке text.
Если по отдельности задавать label1, label2, ... ну не в цикле в общем тогда всё правильно, каждому label свой url.
Заранее спасибо за помощь.
Python
1
2
3
4
5
6
7
8
9
10
11
lbl = []
 
def open_url(url):
    webbrowser.open(url)
 
y = 0
for i in range(len(text)):
     lbl.append(Label(txt, text=text[i]['title'], fg='blue', cursor='hand2'))
     lbl[i].place(relx=0, rely=y)
     lbl[i].bind('<Button-1>', lambda e: open_url(text[i]['url']))
     y += 0.05
Вариант когда всё правильно
Python
1
2
3
4
5
6
7
8
9
10
11
12
lbl = []
 
def open_url(url):
    webbrowser.open(url)
 
lbl1 = Label(txt, text=text[0]['title'])
lbl1.place(relx=0, rely=0)
lbl1.bind('<Button-1>', lambda e: open_url(text[0]['url']))
 
lbl2 = Label(txt, text=text[1]['title'])
lbl2.place(relx=0, rely=0.1)
lbl2.bind('<Button-1>', lambda e: open_url(text[1]['url']))
Миниатюры
Bind для массива  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2019, 12:46
Ответы с готовыми решениями:

Bind для элемента массива
Здравствуйте. Пытаюсь создать 10 элементов img imgY = $('&lt;img /&gt;'); в цикле и прописать для...

Bind для динамических элементов
Проблема в следующем: Код $('#some-selector').bind(&quot;DOMSubtreeModified&quot;, function (){ //code...

Bind для данных, которые могут содержать null
Проблема вот в чем - в таблице БД ест ьполе которое ограничено внешним ключем но может содержать...

Есть ли в ODAC диалоговое окно для запроса bind переменных?
Всем привет! Есть ли в ODAC стандартное диалоговое окно для bind переменных? Например,...

1
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
18.08.2019, 17:55 2
Лучший ответ Сообщение было отмечено Андрей25 как решение

Решение

Python
1
lambda i=i: open_url(text[i]['url'])
Ответ на вопрос почему так: lambda в цикле образует замыкание, которое связывает(захватывает по ссылке) переменную i и в момент выполнения анонимной функции(клик по кнопке) ее значение всегда равно последнему значению счетчика (так как цикл ее перезаписывал на каждой итерации). Для того, чтобы этого не происходило, нужно использовать синтаксис присвоения, таким образом у каждой анонимной функции будет своя копия локальной переменной i со своим значением.
1
18.08.2019, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2019, 17:55
Помогаю со студенческими работами здесь

При создании конфигурации для MPI в Eclipse выскакивает окно : Provider com.sun.xml.internal.bind.v2.ContextFactory
Нужно создать конфигурацию для запуска программы на нескольких потоках,но при создании конфигурации...

Почему если я задаю IP 127.0.0.1 то bind возвращает 0, а если задаю IP в сети, то bind возвращает -1
IP узнаю через 2IP.ru вот и если задаю полученный IP, то программа вылатает когда выполняется...

Последствия не указания файла описания ДНС серверов named.ca в named.conf для Bind
Добрый день ! Уважаемы коллеги, есть вопрос по ДНС серверу Bind. Обязательно ли прописывать в...

Для каждого массива в диалоге ввести размер массива и элементы массива и найти сумму и среднее арифметическое значение для каждого массива
даны 3 различных массива целых чисел(размер каждого не должен превышать 15). Для каждого массива в...

bind
хочу нечто такое. application_-&gt;onAppCmd = boost::bind(&amp;GameCore::engine_handle_cmd, ...); ...

Не стартует bind
Хелп!! вот логи Jun 19 19:32:58 gate named: running Jun 19 19:33:07 gate named: starting BIND...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru