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 with compound shape doesn't get clicks #60632
Comments
In the standard turtle module, when a turtle has a custom shape of type "compound", it doesn't to respond to click events. No problem with polygon shapes. Observed on Windows XP, python 3.2.3, turtle version 1.1b, and on Linux, python 2.7. Test code: ##################################################
import turtle
square = ((0,0),(0,20),(20,20),(20,0))
turtle.addshape("sq1", square) # sq1 = polygon shape
s = turtle.Shape("compound")
s.addcomponent(square, "red")
turtle.addshape("sq2", s) # sq2 = compound shape
t1 = turtle.Turtle(shape="sq1")
t2 = turtle.Turtle(shape="sq2")
t2.fd(20)
def click(x,y): print("click at",x,y)
t1.onclick(click)
t2.onclick(click)
turtle.mainloop()
################################################## When you click on the black square (i.e. t1), the message "click at..." is printed. When you click on the red square (i.e. t2), nothing happens. |
I tried the same script in Python 2.7 and Python 3.4.1 on OSX and had the same results. |
Looks like the issue is that when you are registering mouse events through turtle, it uses Shape._item. For polygon shapes, that's the actual shape item, but for compound shapes, it is an array of shape items. I have attached a patch that makes it so when there is a compound shape, it will iterate over the _item array and add the listener to each individual shape. |
I updated the patch to use the gui check in Lib/test/support, and I renamed the test file to be test_turtle_guionly. |
This issue is "new contributor"-friendly. The next steps would be to apply the patch to a recent version of Python 3, check if tests run cleanly, and if the patch resolves the issue. I'm sorry ingrid that the patch review languished on the issue tracker. |
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: