2015-03-23 6 views
6

Мне просто интересно, существует ли какой-либо возможный способ привязки события click к холсту в Tkinter.Как связать событие click с холстом в Tkinter?

Я хотел бы иметь возможность щелкнуть в любом месте на холсте и переместить объект на него. Я могу сделать движение, но я не нашел способ привязать событие click на холсте.

+2

Try [здесь] (http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm) для хорошего чтения на событиях Tkinter. –

+1

Вы говорите, что не нашли способ привязки события клика на холсте? Где ты посмотрел? Это четко документировано во многих ссылках и учебниках tkinter, и здесь много примеров в stackoverflow. –

ответ

10

Взято прямо из примера из Effbot tutorial о событиях.

В этом примере мы используем метод привязки виджета фрейма для привязки функции обратного вызова к вызванному событию. Запустите эту программу и щелкните в появившемся окне. Каждый раз, когда вы нажимаете, в окне консоли печатается сообщение типа «нажатие на 44 63». События клавиатуры отправляются в виджет, который в настоящее время владеет фокусом клавиатуры. Вы можете использовать метод focus_set для перемещения фокуса на виджет:

from Tkinter import * 

root = Tk() 

def key(event): 
    print "pressed", repr(event.char) 

def callback(event): 
    print "clicked at", event.x, event.y 

canvas= Canvas(root, width=100, height=100) 
canvas.bind("<Key>", key) 
canvas.bind("<Button-1>", callback) 
canvas.pack() 

root.mainloop() 
+3

Зачем нужна функция 'callback'' focus_set() '? – martineau

+0

@MalikBrahimi Вам совсем не нужно устанавливать фокус на рамку. Вы связали событие '' "" с фреймом, поэтому 'callback' будет вызываться только при нажатии области рамки и ничего более. – nbro

+2

Кроме того, OP запрашивает привязку события клика на холсте, а не в кадре. Если вы хотите, чтобы я удалил голос, вы должны изменить свой код и уведомить меня. – nbro

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