मैं वर्तमान में एक रंग योजना संपादक लिख रहा हूं। इस योजना के पूर्वावलोकन के लिए, मैं एक टेक्स्ट विजेट का उपयोग करता हूं, जहां मैं संबंधित रंग टैग (जिसे मैं प्रोग्रामेटिक रूप से उत्पन्न करता हूं) के साथ टेक्स्ट सम्मिलित करता हूं। पाठ विजेट पर कहीं भीपायथन टिंकर: टेक्स्ट विगेट्स टैग्स में ईवेंट प्रसार रोकना
- क्लिक जहां कोई पाठ है:: परिवर्तन पृष्ठभूमि रंग पाठ पर
- क्लिक एक टैग के साथ डाला: परिवर्तन टैग अग्रभूमि रंग इसी
क्या मैं चाहता हूँ निम्नलिखित व्यवहार है
अब यहाँ मेरी समस्या है:
जब मैं एक टैग किए गए पाठ पर क्लिक करें, टैग का कॉलबैक कहा जाता है। अब तक सब ठीक है। लेकिन फिर, टेक्स्ट विजेट का कॉलबैक भी कहा जाता है, हालांकि मैं टैग कॉलबैक विधि में "ब्रेक" देता हूं (जो आगे ईवेंट हैंडलिंग को रोकना चाहिए)। मैं इसे कैसे रोक सकता हूं?
इस विशिष्ट समस्या का वर्णन करने के लिए, मैं (अजगर 2 & 3 के लिए) इस काम कर उदाहरण लिखा है:
#!/usr/bin/env python
try:
from Tkinter import *
from tkMessageBox import showinfo
except ImportError:
from tkinter import *
from tkinter.messagebox import showinfo
def on_click(event, widget_origin='?'):
showinfo('Click', '"{}"" clicked'.format(widget_origin))
return 'break'
root = Tk()
text = Text(root)
text.pack()
text.insert(CURRENT, 'Some untagged text...\n')
text.bind('<Button-1>', lambda e, w='textwidget': on_click(e, w))
for i in range(5):
tag_name = 'tag_{}'.format(i)
text.tag_config(tag_name)
text.tag_bind(tag_name, '<Button-1>',
lambda e, w=tag_name: on_click(e, w))
text.insert(CURRENT, tag_name + ' ', tag_name)
root.mainloop()
किसी भी मदद की सराहना की है!
संपादित करें: पाइथन 2 का भी प्रयास किया।
टैग टेक्स्ट-विशिष्ट आइटम हैं और कोई टैग क्लास नहीं है। वे निश्चित रूप से बेसविड्ज से उपclassed नहीं हैं। उदाहरण के लिए, कैटवास-विशिष्ट वस्तुओं जैसे कि आर्क और लाइनों के लिए डिट्टो। अच्छा कामकाज –