2016-03-04 2 views
0

Я хочу определить, когда кнопка нажата (вниз), но не отпущена (вверх) в tcl/tk.Действие при нажатии кнопки и кнопки вверх в tcl/tk

Когда вы нажимаете кнопку, связанная с ней команда выполняется только после отпускания, а кнопка возвращается.

С Tcl/Tk документации: "Command-Line Имя: -command Имя базы данных: команда базы данных Класс:. Команда Задает команду Tcl, чтобы связать с кнопкой Эта команда обычно вызывается, когда мышь кнопка 1 отбрасывается над окном кнопки. «

Как правило?

Как моя команда выполняется при нажатии кнопки?

+1

'bind .b {puts Down}' –

ответ

2

Обратный вызов -command - это событие высокого уровня, которое запускается в ответ на определенную последовательность событий. С точки зрения событий низкого уровня, вы должны <Enter> виджет, <ButtonPress-1> (часто сокращается до <Button-1> или просто <1>) на кнопку, чтобы начать щелчок, а затем <ButtonRelease-1> на кнопку, а не делать <Leave> или <B1-Leave> за прошедший период (без <Enter> или <B1-Enter>, чтобы отменить его). Это немного сложно!

Но вы всегда можете добавить свои собственные привязки.

bind .btn <ButtonPress-1> {puts "pressed the button"} 
bind .btn <ButtonRelease-1> {puts "released the button"} 

Если вы делаете что-то сложное, следует помнить, что связывание скрипт, который заканчивается break предотвратят любые более поздние привязки (например, кнопка класс привязка) от стрельбы. Кнопки имеют привязки классов для этих событий: <ButtonRelease-1>, <Button-1>, <Leave>, <Enter>, <<Invoke>> (это виртуальное событие) и <Key-space>.

+0

Больше, чем мне нужно. Спасибо! :) –

Смежные вопросы