Issue 22168: Turtle Graphics RawTurtle problem
Created on 2014-08-08 01:27 by Kent.D..Lee, last changed 2022-04-11 14:58 by admin. This issue is now closed.
Messages (5)
msg225049 - (view)
Author: Kent D. Lee (Kent.D..Lee)
Date: 2014-08-08 01:27
Date: 2014-08-08 02:57
Date: 2014-08-08 03:02
Date: 2014-08-24 00:47
Date: 2014-09-14 07:05
This is either a turtle graphics or tkinter problem.
In Python 3.4 it appears that something in Turtle Graphics broke or at least changed. I get the following error when trying to run a program that works in Python 3.1 and 3.2.
Kent's Mac> python3.4 c4.py
Traceback (most recent call last):
File "c4.py", line 283, in <module>
main()
File "c4.py", line 277, in main
animApp = Connect4Application(root)
File "c4.py", line 110, in __init__
self.buildWindow()
File "c4.py", line 129, in buildWindow
theTurtle = turtle.RawTurtle(canvas)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/turtle.py", line 2534, in __init__
self.screen = TurtleScreen(canvas)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/turtle.py", line 1000, in __init__
cv._rootwindow.call('wm', 'attributes', '.', '-topmost', '1')
AttributeError: 'Canvas' object has no attribute '_rootwindow'
Kent's Mac>
The code is attached. The error occurs on line 129 when trying to create a RawTurtle and provide it with a Canvas.
msg225053 - (view)
Author: Ned Deily (ned.deily) *
Date: 2014-08-08 02:57
It looks like the changes associated with Issue11571, released in 3.4.1, cause this problem when the program supplies its own Canvas object rather than relying on the turtle module to create a default one.msg225054 - (view) Author: Ned Deily (ned.deily) *
Date: 2014-08-08 03:02
As a temporary workaround, you could edit turtle.py to revert that change, in other words, just search for and delete the whole "if sys.platform == 'darwin'" test: diff -r d85fcf23549e Lib/turtle.py --- a/Lib/turtle.py Tue Aug 05 14:02:11 2014 -0500 +++ b/Lib/turtle.py Thu Aug 07 19:58:25 2014 -0700 @@ -993,12 +993,6 @@ self._colormode = _CFG["colormode"] self._keys = [] self.clear() - if sys.platform == 'darwin': - # Force Turtle window to the front on OS X. This is needed because - # the Turtle window will show behind the Terminal window when you - # start the demo from the command line. - cv._rootwindow.call('wm', 'attributes', '.', '-topmost', '1') - cv._rootwindow.call('wm', 'attributes', '.', '-topmost', '0') def clear(self): """Delete all drawings and all turtles from the TurtleScreen. The file is at /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/turtle.py.msg225776 - (view) Author: Ned Deily (ned.deily) *
Date: 2014-08-24 00:47
The attached patch should prevent the AttributeError exception when not using a default Canvas. I now think the overall approach introduced in Issue11571 is not the best. I plan to commit this fix for now but encourage more robust solutions in the long term.msg226863 - (view) Author: Ned Deily (ned.deily) *
Date: 2014-09-14 07:05
The changesets below should prevent the problem in 3.4.2 and 3.5.0. Since there are no standard tests for turtle at the moment, there is no testcase for using a non-default Canvas but one should be added when turtle tests are (Issue21914 and Issue21916). New changset fac17d06e01d by Ned Deily in branch '3.4': Issue #22168: Prevent turtle AttributeError with non-default Canvas on OS X. https://hg.python.org/cpython/rev/fac17d06e01d New changeset 775453a7b85d by Ned Deily in branch 'default': Issue #22168: Prevent turtle AttributeError with non-default Canvas on OS X. https://hg.python.org/cpython/rev/775453a7b85d
History
Date
User
Action
Args
2022-04-11 14:58:06adminsetgithub: 66364
2014-09-14 07:05:33ned.deilysetstatus: open -> closed
resolution: fixed
messages: + msg226863
keywords: + patch
messages: + msg225776
nosy: + ned.deily
resolution: fixed
messages: + msg226863
stage: patch review -> resolved
2014-08-24 00:47:02ned.deilysetfiles: + issue22168.patchkeywords: + patch
messages: + msg225776
stage: needs patch -> patch review
2014-08-08 03:02:42ned.deilysetmessages: + msg225054 2014-08-08 02:57:02ned.deilysetversions: + Python 3.5nosy: + ned.deily
messages: + msg225053
assignee: ned.deily
stage: needs patch