Связывание событий

svyazyvanie sobytij Графические интерфейсы пользователя

Из всех перечисленных протоколов наиболее универсальным, но, вероятно, и наиболее сложным является метод bind. Более подробно мы изучим его потом, но чтобы получить первоначальное представление, рассмотрим пример 7.16, который создает тот же графический интерфейс, что и примеры из предыдущего раздела, но для перехвата события нажатия кнопки использует метод bind, а не параметр command.

Пример 7.16. PP4E\Gui\Intro\gui3e.py

import sys

from tkinter import *

def hello(event):

print(‘Press twice to exit’) # одиночный щелчок левой кнопкой

def quit(event): # двойной щелчок левой кнопкой

print(‘Hello, I must be going…’) # event дает виджет, координаты и т.д. sys.exit()

widget = Button(None, text=’Hello event world’)

widget.pack()

widget.bind(‘<Button-1>’, hello) # привязать обработчик щелчка

widget.bind(‘<Double-1>’, quit) # привязать обработчик двойного щелчка

widget.mainloop()

В этой версии параметр command для кнопки вообще не определяется. Вместо этого выполняется установка низкоуровневых обработчиков событий одинарных (<Button-1>) и двойных щелчков левой кнопкой (<Double-1>) внутри области отображения кнопки. Метод bind принимает большую группу таких идентификаторов событий в разнообразных форматах, с которыми мы познакомимся в главе 8.

При выполнении этого сценария снова создается то же самое окно (рис. 7.11). При одиночном щелчке на кнопке программа выводит сообщение, но не завершается — чтобы завершить программу, нужно щелкнуть на кнопке дважды. Ниже приводятся сообщения, выводимые после двух одиночных щелчков и одного двойного (двойной щелчок сначала запускает обработчик события одиночного щелчка):

C:\\PP4E\Gui\Intro> python gui3e.py

Press twice to exit

Press twice to exit

Press twice to exit

Hello, I must be going

Щелчки мышью на кнопке в этом сценарии перехватываются вручную, поэтому конечный результат примерно такой же — специальные протоколы виджетов, такие как параметр command кнопки, в действительности являются просто интерфейсами более высокого уровня к событиям, которые могут быть перехвачены с помощью метода bind.

Рис. 7.11. Кнопка, нажатие на которую вызывает функцию Python

 

Более подробно мы разберем работу метода bind и все другие способы установки обработчиков событий, предоставляемые библиотекой tkinter, далее в этой книге. Однако сначала займемся построением более крупных графических интерфейсов, состоящих не только из одной кнопки, и другими способами использования классов в графических интерфейсах.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий