2015-03-23 14 views
6

Tkinter'de bir tıklama etkinliğini bir tuvale bağlamak için herhangi bir yol olup olmadığını merak ediyorum.Tkinter'da bir tuvale olayı bir tuvale nasıl bağlanır?

Tuval üzerinde herhangi bir yeri tıklayabilmek ve bir nesneye taşınabilmeyi isterim. Harekete geçebiliyorum, ancak bir tuvalde tıklama etkinliğini bağlamanın bir yolunu bulamadım.

+2

deneyin (http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm): Sen bir widget odağı taşımak için focus_set yöntemini kullanabilirsiniz Tkinter olaylarında. –

+1

Bir tuvalde tıklama etkinliğini bağlamanın bir yolunu bulamadınız mı? Nereye baktın? Bu, pek çok referansta ve öğreticide açık bir şekilde belgelenmiştir ve burada yığın akışında birçok örnek vardır. –

cevap

10

Etkinliklerde bir Effbot tutorial örneğinden doğrudan alınmıştır.

Bu örnekte, çağrılan bir olaya geri arama işlevi bağlamak için çerçeve parçacığının bağlama yöntemini kullanırız. Bu programı çalıştırın ve görüntülenen pencereye tıklayın. Her tıklattığınızda, konsol penceresine “44 63'te tıklanmış” gibi bir mesaj yazdırılır. Klavye olayları, şu anda klavye odağı olan widget'a gönderilir. iyi bir okuma için [buraya]

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

Neden 'callback' işlevinin' focus_set() 'yapması gerekiyor? – martineau

+0

@MalikBrahimi Odağı çerçeveye ayarlamak için hiç bir şeye ihtiyacınız yok. "" etkinliğini çerçeveyle ilişkilendirdiniz, bu nedenle "geri arama" yalnızca çerçeve alanını tıklattığınızda ve daha fazlası olmadığında çağrılır. – nbro

+2

Ayrıca, OP bir çerçeve üzerinde değil, bir Tuval üzerine tıklatma olayının bağlanmasını istemektedir. Aşağı oylamayı kaldırmamı isterseniz, kodunuzu değiştirmeli ve bana bildirmelisiniz. – nbro

İlgili konular