Python Turtle Screen.onkey()
I am a beginner in python and I am building a Snake game where on the key Strokes snake can be controlled. I am trying to use screen.onkey() I wanted to know can a function in the
Solution 1:
If you should try to use it then you should know that you can use two different keys to run the same function.
import turtle
def test():
print('test')
turtle.onkey(fun=test, key="Up")
turtle.onkey(fun=test, key="g")
turtle.listen()
turtle.mainloop()
The same is with onkeypress
and onkeyrelease
EDIT:
But with onkey
you can't get information which key was used to execute this function.
You can't also use combinations like Ctrl+g
, Alt+g
, Shift+g
turtle
is built on top of tkinter
and you would have to access Canvas
and use directly bind()
for this. And function has to get one value with event's information.
import turtle
def test(event):
print('test event:', event)
print('test keysym:', event.keysym)
print('test state:', event.state)
print('test Ctrl :', bool(event.state & 4))
print('test Shift:', bool(event.state & 1))
print('test Alt :', bool(event.state & 8))
print('---')
canvas = turtle.getcanvas()
canvas.bind('<Up>', test)
canvas.bind('<g>', test)
canvas.bind('<G>', test) # G = Shift+g
canvas.bind('<Control-g>', test)
canvas.bind('<Alt-g>', test)
turtle.listen()
turtle.mainloop()
Result:
test event:<KeyPresseventstate=Mod2keysym=gkeycode=42char='g'x=545y=339>test keysym:gtest state:16test Ctrl :Falsetest Shift:Falsetest Alt :False---test event:<KeyPresseventstate=Shift|Mod2keysym=Gkeycode=42char='G'x=545y=339>test keysym:Gtest state:17test Ctrl :Falsetest Shift:Truetest Alt :False---test event:<KeyPresseventstate=Control|Mod2keysym=gkeycode=42char='\x07'x=545y=339>test keysym:gtest state:20test Ctrl :Truetest Shift:Falsetest Alt :False---test event:<KeyPresseventstate=Mod1|Mod2keysym=gkeycode=42char='g'x=545y=339>test keysym:gtest state:24test Ctrl :Falsetest Shift:Falsetest Alt :True---
Post a Comment for "Python Turtle Screen.onkey()"