MyTetra Share
Делитесь знаниями!
Как в tkinter создать событие, подписаться на него, и обработать событие?
Время создания: 25.02.2026 14:24
Текстовые метки: python, tkinter, событие, создание, генерация, подписка, обработка, bind
Раздел: Компьютер - Программирование - Язык Python - Tkinter
Запись: xintrea/mytetra_syncro/master/base/1772018642sf5k6befwz/text.html на raw.githubusercontent.com

Любому объекту-окну или виджету, например, главному окну приложения tk.Tk() или даже простому Label, можно добавлять события, которые он будет генерировать. Вызывать генерацию такого события можно как внутри объекта, так и внешним кодом.


События различаются по их текстовому наименованию.


Вот основные блоки кода, которые используются чтобы создать событие, подписаться на него, и обработать событие:



# Создается пользовательское событие

self.root.event_add("<<StatusChanged>>", "None")

...

# Подписка на событие в виде лямбды

frame1.bind("<<StatusChanged>>", lambda e: self.on_status_changed(e, self.label1))


# Подписка на событие, чтобы вызывался метод on_status_changed_for_frame

# У данного метода должны быть паметры (self, data=None)

frame2.bind("<<StatusChanged>>", self.on_status_changed_for_frame)

...

# Генерация события корневого окна (оно распространится на всех детей)

self.root.event_generate("<<StatusChanged>>", data="New status")



Эти блоки кода могут находиться в совершенно разных местах приложения, даже в разных файлах. И событие будет "доходить" до объекта, который на него подписался, и будет вызываться функция - обработчик.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования