2010-10-22 37 views
5

Tôi có một thanh trượt và tôi muốn gọi một hàm cụ thể chỉ khi tương tác hoàn tất. Ý tưởng là gọi một hàm sau 500ms (và không phải trước đó). Nếu thanh trượt tiếp tục di chuyển thì cuộc gọi sẽ bị hủy. Nói cách khác, nếu thanh trượt "nằm" trong hơn 500ms so với chức năng là cuộc gọi.Làm thế nào tôi có thể gọi một hàm có sự chậm trễ trong python?

Cảm ơn

Cập nhật

#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() 

Trả lời

2

Patrick: Xem chủ đề này - How to create a timer using tkinter?

Bạn có thể sử dụng Threading.Timer để làm điều này. Nó có phương thức cancel mà bạn có thể sử dụng để hủy nó trước khi nó chạy.

+1

Khi tương tác với thư viện GUI (điều này giống như âm thanh), có thể bạn không muốn sử dụng chuỗi. Sử dụng bộ đếm giờ cửa sổ. Họ sẽ không chạy trong một chủ đề để họ sẽ không giới thiệu các vấn đề luồng; thay vào đó, chúng chạy ở một số điểm được xác định trước tùy thuộc vào hệ thống. Đây là những khác nhau trong các thư viện GUI khác nhau, nhưng chúng là một tính năng tiêu chuẩn. Ví dụ, trong Win32 nó là 'SetTimer()' và thông báo WM_TIMER. –

+0

@aaronasterling Tôi nhận được thông báo lỗi sau: tăng RuntimeError ("chủ đề đã bắt đầu") (Tôi đã cập nhật câu hỏi với mã của mình) – aneuryzm

+0

@Glenn Cảm ơn bạn đã chỉ ra điều đó. Bạn sẽ đặt câu trả lời đó để câu trả lời có thể là câu trả lời được chấp nhận? Tôi sẽ để lại câu trả lời này như một bài học đối tượng. – aaronasterling

Các vấn đề liên quan