Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2016 20:48:21

3dpython
Зарегистрирован: 2012-10-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

создание кнопок через цикл.

Как сделать так что бы при нажатии на кнопку брались данные соотвествующей нажитой кнопки

import tkinter
root=tkinter.Tk()
but=[0,1,2]
nadpis=["0","1","2"]
def pod(event):
    print(nadpis[xx])
for xx in but:
    but[xx]=tkinter.Button(root,text=nadpis[xx],width=10)
    but[xx].bind("<Button-1>",pod)
    but[xx].pack()
root.mainloop()

Офлайн

#2 Апрель 8, 2016 21:18:11

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

создание кнопок через цикл.

Есть несколько вариантов.
Самый простой - явно передавать.

but[xx].bind("<Button-1>", lambda event: pod(event, xx))

Или получить параметры самой кнопки.

print(event.widget["text"])

Офлайн

#3 Апрель 8, 2016 22:19:50

3dpython
Зарегистрирован: 2012-10-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

создание кнопок через цикл.

какие параметры еще можно получить с кнопки?
и где поподробнее можно прочитать про event и widget

Офлайн

#4 Апрель 8, 2016 23:16:43

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

создание кнопок через цикл.

Можно тут почитать, правда на английском. И я не уверен, что на русском много документации по Tkinter.

Офлайн

#5 Апрель 9, 2016 23:13:00

3dpython
Зарегистрирован: 2012-10-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

создание кнопок через цикл.

с лямдой так работает

lambda event, xx=xx: pod(event, xx)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version