2010-09-16 15 views
5

के दौरान एक GtkTreeView में नया चयन प्राप्त करें, जब भी मैं gtk.TreeView परिवर्तनों का चयन करता हूं और जब यह करता है, तो फ़ंक्शन w/इस जानकारी को कॉल करने के लिए जब भी मैं पता लगाना चाहता हूं। एक ही रास्ता मैं इसे अब तक ऐसा करने के लिए मिल गया है इन सभी संकेतों को संलग्न करने के लिए है:सिग्नल

... 
    self.sitterView.connect("cursor-changed", self.selectionChanged) 
    self.sitterView.connect("unselect-all", self.selectionChanged) 
    self.sitterView.connect("toggle-cursor-row", self.selectionChanged) 
    self.sitterView.connect("select-all", self.selectionChanged)  
... 
def selectionChanged(self, treeview): 
    foo(self.sitterView.get_selection().get_selected()) 

हालांकि, यह चयन मैं कॉलबैक "देरी" है से प्राप्त की तरह लगता है। यही है, यह पिछले कॉलबैक पूरा होने के बाद चयन दिखाता है। उदाहरण के लिए, यदि मैं निरंतर CTRL + पंक्ति पर क्लिक करता हूं, जब पंक्ति को अचयनित से चुनने के लिए जाता है, तो foo को कोई चयन नहीं दिया जाता है, और जब पंक्ति को चयनित से चुनने के लिए चुना जाता है, तो इसे एक चयन दिया जाता है। अगर मैं get_selection().get_selected() को दूसरी बार कॉल करता हूं, हालांकि, मुझे सही चयन मिलता है। कोई विचार यह कैसे डब्ल्यू/यह सौदा करने के लिए?

उत्तर

6

मुझे यकीन नहीं है कि toggle-cursor-row करता है (दस्तावेज़ीकरण निराशाजनक रूप से खाली है), लेकिन मुझे लगता है कि यह संभालने के लिए गलत संकेत है।

इसके बजाय, आपको GtkTreeSelection changed सिग्नल से कनेक्ट करना चाहिए। इसे सभी चयन परिवर्तन घटनाओं का ख्याल रखना चाहिए, इसलिए आपको अन्य सिग्नल से कनेक्ट करने की आवश्यकता नहीं है।

+0

ओह भयानक! मुझे एहसास नहीं हुआ कि चयन वस्तु नहीं बदलेगी, और यह स्वयं के सिग्नल था। मुझे लगता है कि मैं यही देख रहा हूं। – Claudiu

+0

बहुत अच्छा काम करता है, फिर से टाइप करें – Claudiu

+0

क्या इस सिग्नल को ग्लैड से जोड़ने का कोई तरीका है? – umpirsky