Skip to content

Commit 6e4295c

Browse files
authored
Merge pull request #18284 from richardsheridan/TkTimer_after_idle_after_0
TkTimer interval=0 workaround
2 parents 1048430 + 5ca19cd commit 6e4295c

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/matplotlib/backends/_backend_tk.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,16 @@ def _on_timer(self):
9696
# if _timer is None, this means that _timer_stop has been called; so
9797
# don't recreate the timer in that case.
9898
if not self._single and self._timer:
99-
self._timer = self.parent.after(self._interval, self._on_timer)
99+
if self._interval > 0:
100+
self._timer = self.parent.after(self._interval, self._on_timer)
101+
else:
102+
# Edge case: Tcl after 0 *prepends* events to the queue
103+
# so a 0 interval does not allow any other events to run.
104+
# This incantation is cancellable and runs as fast as possible
105+
# while also allowing events and drawing every frame. GH#18236
106+
self._timer = self.parent.after_idle(
107+
lambda: self.parent.after(self._interval, self._on_timer)
108+
)
100109
else:
101110
self._timer = None
102111

0 commit comments

Comments
 (0)