This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年06月22日 04:15 by terry.reedy, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Messages (4) | |||
|---|---|---|---|
| msg221215 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2014年06月22日 04:15 | |
When a turtle update operation cannot finish because the underlying canvas has been cleared (when the STOP button is pushed), turtle.Terminator is raised. When turtledemo runs the main function of a demo, it catches any Termininator raised before main returns. However, special demos leave an event loop running after main returns. If the demo is free running, as with clock and minimal_hanoi, clicking STOP causes such exceptions. (This is not be a problem with paint as updates only happen in response to mouse events on the canvas and complete before a user could move the mouse to the STOP button.) This is the clock trackback, with common file prefix removed: \tkinter\__init__.py", line 1487, in __call__ return self.func(*args) \tkinter\__init__.py", line 532, in callit func(*args) \turtledemo\clock.py", line 116, in tick second_hand.setheading(6*sekunde) \turtle.py", line 1935, in setheading self._rotate(angle) \turtle.py", line 3277, in _rotate self._update() \turtle.py", line 2659, in _update self._update_data() \turtle.py", line 2645, in _update_data self.screen._incrementudc() \turtle.py", line 1291, in _incrementudc raise Terminator The hanoi traceback starts differently: \tkinter\__init__.py", line 1487, in __call__ return self.func(*args) \turtle.py", line 686, in eventfun fun() \turtledemo\minimal_hanoi.py", line 53, in play hanoi(6, t1, t2, t3) ...<5 recursive calls deleted> \turtledemo\minimal_hanoi.py", line 36, in push to_.push(from_.pop()) \turtledemo\minimal_hanoi.py", line 36, in push d.setx(self.x) \turtle.py", line 1807, in setx self._goto(Vec2D(x, self._position[1])) \turtle.py", line 3178, in _goto <last 3 lines as above> These exceptions and tracebacks do not stop the master demo window, but are printed to the console (python -m turtledemo) or Idle Shell (open in editor, run). They are ugly, might unnecessarily alarm a naive user, or falsely teach that tracebacks are to be ignored. In the patch to clock.tick, I put try: at the top, to be safe, although just before the update of the second hand might be good enough. |
|||
| msg221216 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年06月22日 05:21 | |
New changeset a43d03cdf38b by Terry Jan Reedy in branch '2.7': Issue #21823: Catch turtle.Terminator exceptions in turtledemo. http://hg.python.org/cpython/rev/a43d03cdf38b New changeset 1ae2382417dc by Terry Jan Reedy in branch '3.4': Issue #21823: Catch turtle.Terminator exceptions in turtledemo. http://hg.python.org/cpython/rev/1ae2382417dc |
|||
| msg221217 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2014年06月22日 05:24 | |
In 2.7, the exception in tick occurred at tracer(False), so I moved try: up in all patches. |
|||
| msg221221 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2014年06月22日 06:27 | |
Since hanoi do not have user interaction, once started, it does not need to be 'special'. Like planets_and_moon, it could run until done and then return 'Done'. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:05 | admin | set | github: 66022 |
| 2014年06月24日 23:11:34 | terry.reedy | link | issue14117 dependencies |
| 2014年06月22日 06:27:42 | terry.reedy | set | messages: + msg221221 |
| 2014年06月22日 06:02:29 | terry.reedy | link | issue17172 dependencies |
| 2014年06月22日 05:24:00 | terry.reedy | set | status: open -> closed resolution: fixed messages: + msg221217 stage: needs patch -> resolved |
| 2014年06月22日 05:21:13 | python-dev | set | nosy:
+ python-dev messages: + msg221216 |
| 2014年06月22日 04:15:08 | terry.reedy | create | |