2010-10-22 14 views
5

मेरे पास एक स्लाइडर है और मैं केवल एक विशिष्ट कार्य को कॉल करना चाहता हूं जब बातचीत पूरी हो जाती है। विचार 500ms (और पहले नहीं) के बाद एक समारोह को कॉल करना है। यदि स्लाइडर आगे बढ़ता रहता है तो कॉल रद्द कर दिया जाता है। दूसरे शब्दों में, यदि स्लाइडर कॉल से 500ms से अधिक के लिए "शेष" है तो कॉल कॉल है।मैं अजगर में देरी के साथ फ़ंक्शन कैसे कॉल कर सकता हूं?

धन्यवाद

अद्यतन

#slider 

    def updateValue(self): 
     #self._job = None 
     #self.preview.updateContourValue(float(self.slider.get())) 
     print "updated value" 

    timer = Timer(5.0, updateValue) 

    def sliderCallback(self): 
     timer.cancel() 
     timer.start() 

उत्तर

2

पैट्रिक: इस सूत्र देखें - How to create a timer using tkinter?

आप Threading.Timer उपयोग कर सकते हैं यह करने के लिए। इसमें cancel विधि है जिसका उपयोग आप इसे चलाने से पहले इसे रद्द करने के लिए कर सकते हैं।

+1

जब एक जीयूआई लाइब्रेरी (जो यह लगता है) के साथ बातचीत करते समय, आप शायद थ्रेड का उपयोग नहीं करना चाहते हैं। विंडोिंग टाइमर का प्रयोग करें। वे धागे में नहीं चलेगा ताकि वे थ्रेडिंग मुद्दों को पेश नहीं करेंगे; इसके बजाय, वे सिस्टम के आधार पर कुछ पूर्वनिर्धारित बिंदु पर चलाए जाते हैं। ये विभिन्न जीयूआई पुस्तकालयों में अलग हैं, लेकिन वे एक मानक विशेषता हैं। उदाहरण के लिए, Win32 में यह 'SetTimer()' और WM_TIMER संदेश है। –

+0

@Aaronasterling मुझे निम्न त्रुटि संदेश मिल रहा है: RuntimeError ("थ्रेड पहले ही शुरू हो गया है") बढ़ाएं (मैंने अपने कोड के साथ प्रश्न अपडेट किया है) – aneuryzm

+0

@Glenn यह इंगित करने के लिए धन्यवाद। क्या आप इसे एक उत्तर के रूप में रखेंगे ताकि यह स्वीकार किया जा सके? मैं इस जवाब को ऑब्जेक्ट सबक के रूप में छोड़ दूंगा। – aaronasterling

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

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