Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2021 17:35:50

Twist
Зарегистрирован: 2020-12-25
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Теоретический вопрос по функциям кнопки Tkinter

Подскажите, можно ли как-нибудь сделать так, чтобы когда создали кнопку, дали ей имя и назначили функцию, чтобы при нажатии она передавала в функцию свое имя, очень надо, заранее спасибо

Офлайн

#2 Дек. 13, 2021 17:42:47

Twist
Зарегистрирован: 2020-12-25
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Теоретический вопрос по функциям кнопки Tkinter

Если при нажатии будет выполняться функция, которая вычисляет ее имя, тоже пойдет, на кнопки биндить нельзя

Офлайн

#3 Дек. 13, 2021 20:14:02

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

Теоретический вопрос по функциям кнопки Tkinter

Не пробовал пронаследоваться от класса кнопки и в классе наследнике добавить поле имя и метод для чтения этого имени? Будет та же кнопка, только у такой кнопки будет ещё имя сохранено и его можно будет получать через метод. Это такой общий шаблон, который подходит не только для добавления имён, но и для многого другого. Если же у кнопки можно получать текст, то лучше не плодить классы, а получить этот текст уже реализованными средствами. Это тоже такой общий шаблон.



Отредактировано py.user.next (Дек. 13, 2021 20:15:18)

Офлайн

#4 Дек. 14, 2021 17:38:43

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Теоретический вопрос по функциям кнопки Tkinter

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()
ЗЫ: мимо кнопок не кликать, вылезет експшин.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 14, 2021 17:46:56)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version