Twist
Дек. 13, 2021 17:35:50
Подскажите, можно ли как-нибудь сделать так, чтобы когда создали кнопку, дали ей имя и назначили функцию, чтобы при нажатии она передавала в функцию свое имя, очень надо, заранее спасибо
Twist
Дек. 13, 2021 17:42:47
Если при нажатии будет выполняться функция, которая вычисляет ее имя, тоже пойдет, на кнопки биндить нельзя
py.user.next
Дек. 13, 2021 20:14:02
Не пробовал пронаследоваться от класса кнопки и в классе наследнике добавить поле имя и метод для чтения этого имени? Будет та же кнопка, только у такой кнопки будет ещё имя сохранено и его можно будет получать через метод. Это такой общий шаблон, который подходит не только для добавления имён, но и для многого другого. Если же у кнопки можно получать текст, то лучше не плодить классы, а получить этот текст уже реализованными средствами. Это тоже такой общий шаблон.
PEHDOM
Дек. 14, 2021 17:38:43
Twist
дали ей имя и назначили функцию
Twist
на кнопки биндить нельзя
вы не находите тут противоречия? что по вашему “назначили функцию”?
так чтоле?
import tkinter as tk
def handler(event):
print(event.widget.name)
root = tk.Tk()
b1 = tk.Button(root, text="Click me")
b1.name = 'кнопка 1'
b2 = tk.Button(root, text="No, click me!")
b2.name = 'кнопка 2'
b1.pack()
b2.pack()
root.bind('<Button-1>', handler)
root.mainloop()
ЗЫ: мимо кнопок не кликать, вылезет експшин.