Bind
bind— привязка скриптов Tcl к X событиям. Команда назначает событиям ввода от “Мыши” и клавиатуры (Х событиям) исполнение скрипта Tcl.
 
  • Синтаксис
  • Описание
  • Образцы событий
  • Модификаторы
  • Типы событий
  • Подстановки и скрипты привязки
  • Несколько привязок , отвечающих образцу 
  •  Последовательности нескольких событий и игнорируемые события 
  • Ошибки
  • СИНТАКСИС ОПИСАНИЕ ОБРАЗЦЫ СОБЫИЙ МОДИФИКАТОРЫ ТИПЫ СОБЫТИЙ ПОДСТАНОВКИ И СКРИПТЫ ПРИВЯЗКИ  
    NotifyAncestor NotifyNonlinearVirtual
    NotifyDetailNone NotifyPointer
    NotifyInterior NotifyPointerRoot
    NotifyNonlinear NotifyVirtual
    НЕСКОЛЬКО ПРИВЯЗОК, ОТВЕЧАЮЩИХ ОБРАЗЦУ
     
    Данному X событию может отвечать несколько привязок. Если эти привязки соответствуют различным тегам, то все они выполняются по очереди. По умолчанию сначала исполняется привязка для примитива, затем привязка класса, затем привязка верхнего уровня и привязка all . Этот порядок для конкретного окна можно поменять с помощью команды bindtags, которая позволяет также выполнить дополнительные привязки к окну.
    Управление обработкой скриптов, отвечающих образцу, осуществляется командами continue и break в привязанном скрипте. При выполнении команды continue выполнение текущего привязанного скрипта прерывается и Tk переходит к выполнению скриптов, соответствующих остальным тегам. При выполнении команды break  выполнение текущего привязанного скрипта прерывается и никакие другие скрипты не выполняются.

    Если данному событию соответствует несколько привязок с одним и тем же тегом, то из них выбирается наиболее конкретная привязка и выполняется ее скрипт. Выбор наиболее конкретной привязки осуществляется по следующим критериям:

    а) образец события, задающий конкретную кнопку или клавишу, более конкретен, чем тот, в котором такой спецификации не задано;

    б) более длинная последовательность (по числу отвечающих образцу событий) конкретнее более короткой;

    в) если модификаторы первого образца содержатся среди модификаторов второго, то образец с большим числом модификаторов более конкретен;

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

    д) если последовательность отвечает двум или более виртуальным событиям, то из них выбирается какое-нибудь одно, однако порядок выбора не определен.
    Если в подходящей последовательности событий больше одного события, то критерии (а) - (д) применяются ко всем событиям, начиная с самого последнего и до самого первого события последовательности. Если критерии не позволяют определить победителя, то победителем становится событие, зарегистрированное последним.

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

    event add <<Paste>> <Control-y>

    event add <<Paste>> <Button-2>

    event add <<Scroll>> <Button-2>

    bind Entry <<Paste>> {puts Paste}

    bind Entry <<Scroll>> {puts Scroll}

    При нажатии Control-y будет выполнена привязка <<Paste>>, а при нажатии кнопки 2 — одна из привязок <<Paste>> или <<Scroll>>, причем определить какой именно будет эта привязка, невозможно.

    Если X событие не подходит ни под одну из существующих привязок, то событие игнорируется. Наступление не привязанного события не считается ошибкой.

    ПОСЛЕДОВАТЕЛЬНОСТИ НЕСКОЛЬКИХ СОБЫТИЙ И ИГНОРИРУЕМЫЕ СОБЫТИЯ
    Если аргумент последовательность в команде bind состоит из нескольких образцов событий, то скрипт выполняется в случае, если последние события (включая самое последнее) подходят под данную последовательность. Это означает, например, что при неоднократном последовательном нажатии кнопки 1 каждое из нажатий, за исключением самого первого, отвечает образцу <Doudble-ButtonPress-1>. Если в последовательности событий происходят посторонние события, то они игнорируются, за исключением событий KeyPress и ButtonPress. Например, нажатия на кнопку “1” будут соответствовать образцу <Doudble-ButtonPress-1>, даже если их перемежают события ButtonRelease или Motion. Кроме того событию KeyPressможет предшествовать произвольная последовательность событий KeyPress для модификаторов, среди которых нет модификаторов, нарушающих соответствие образцу. Например, последовательности событий aBотвечает нажатие на клавишу a, отпускание клавиши a, нажатие на клавишу Shift и нажатие на клавишу b, так как нажатие на клавишу модификатора Shift игнорируется. И, наконец, если последовательно происходит несколько событий Motion, то для установления соответствия привязке берется последнее из них.


    ОШИБКИ


    [ Список команд Tk ]            [ Содержание ]