Bạn không thể.
Thay vào đó, bạn có thể thực hiện lệnh chậm trễ bất kỳ công việc thực tế nào trong một khoảng thời gian ngắn bằng cách sử dụng 'sau'. Mỗi khi lệnh của bạn được gọi, hãy hủy mọi công việc đang chờ xử lý và lên lịch lại công việc. Tùy thuộc vào yêu cầu thực tế của bạn là gì, trễ nửa giây có thể là đủ.
Một lựa chọn khác là không sử dụng tính năng lệnh dựng sẵn và thay vào đó sử dụng các ràng buộc tùy chỉnh. Điều này có thể là rất nhiều công việc để có được chính xác, nhưng nếu bạn thực sự cần kiểm soát hạt mịn bạn có thể làm điều đó. Đừng quên rằng người ta có thể tương tác với các widget bằng cách sử dụng bàn phím ngoài chuột.
Dưới đây là một ví dụ ngắn cho thấy làm thế nào để sắp xếp công việc phải thực hiện trong một nửa thứ hai:
import Tkinter as tk
#create window & frames
class App:
def __init__(self):
self.root = tk.Tk()
self._job = None
self.slider = tk.Scale(self.root, from_=0, to=256,
orient="horizontal",
command=self.updateValue)
self.slider.pack()
self.root.mainloop()
def updateValue(self, event):
if self._job:
self.root.after_cancel(self._job)
self._job = self.root.after(500, self._do_something)
def _do_something(self):
self._job = None
print "new value:", self.slider.get()
app=App()
Nguồn
2010-10-19 12:53:22
Ok, cách tốt nhất để trì hoãn 0.5 là gì? – aneuryzm
@Patric: Tôi đã chỉnh sửa câu trả lời để bao gồm một ví dụ –
Cảm ơn, tôi nhận được lỗi này: AttributeError: đối tượng 'str' không có thuộc tính '_job' – aneuryzm