Skip to content Skip to sidebar Skip to footer

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()"