2010-05-07 8 views
21

यदि मैं डेटा प्रदर्शित करने के लिए कैनवास का उपयोग कर रहा हूं और मैं चाहता हूं कि उपयोगकर्ता अधिक जानकारी प्राप्त करने या किसी तरीके से इसके साथ बातचीत करने के लिए कैनवास पर विभिन्न वस्तुओं पर क्लिक करने में सक्षम हो, तो इसके बारे में जाने का सबसे अच्छा तरीका क्या है ?मैं टिंकर का उपयोग कर कैनवास पर आइटम्स बाइंडिंग को कैसे जोड़ूं?

ऑनलाइन खोजना मैं टैग्स पर ईवेंट को बाध्य करने के बारे में जानकारी प्राप्त कर सकता हूं लेकिन यह और अधिक अप्रत्यक्ष प्रतीत होता है जो मैं चाहता हूं। मैं टैग के साथ आइटम को समूहित नहीं करना चाहता हूं, लेकिन जब उपयोगकर्ता कैनवास पर विशिष्ट आइटम क्लिक करता है तो विशिष्ट फ़ंक्शन कॉल करता है।

उत्तर

50

) एक कैनवास वस्तु आप tag_bind उपयोग करने के लिए (की जरूरत है में निहित वस्तुओं के साथ बातचीत करने के लिए जो इस प्रारूप है: tag_bind(item, event=None, callback, add=None)

आइटम पैरामीटर या तो कोई टैग या आईडी हो सकता है।

from tkinter import * 

def onObjectClick(event):     
    print('Got object click', event.x, event.y) 
    print(event.widget.find_closest(event.x, event.y)) 

root = Tk() 
canv = Canvas(root, width=100, height=100) 
obj1Id = canv.create_line(0, 30, 100, 30, width=5, tags="obj1Tag") 
obj2Id = canv.create_text(50, 70, text='Click', tags='obj2Tag') 

canv.tag_bind(obj1Id, '<ButtonPress-1>', onObjectClick)  
canv.tag_bind('obj2Tag', '<ButtonPress-1>', onObjectClick) 
print('obj1Id: ', obj1Id) 
print('obj2Id: ', obj2Id) 
canv.pack() 
root.mainloop() 
+7

अच्छा उदाहरण:

यहाँ अवधारणा को वर्णन करने के एक उदाहरण है। मुझे पसंद है कि आप आईडी और टैग दोनों का उपयोग कैसे दिखाते हैं, और पॉइंट होम ड्राइव करने के लिए 'obj1Id' और' obj1Tag' जैसे नामों का उपयोग करते हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे