New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Turtle Graphics RawTurtle problem #66364
Comments
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. |
It looks like the changes associated with bpo-11571, 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. |
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. |
The attached patch should prevent the AttributeError exception when not using a default Canvas. I now think the overall approach introduced in bpo-11571 is not the best. I plan to commit this fix for now but encourage more robust solutions in the long term. |
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 (bpo-21914 and bpo-21916). New changset fac17d06e01d by Ned Deily in branch '3.4': New changeset 775453a7b85d by Ned Deily in branch 'default': |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: