Event Handling Code (basic)

  • #1
Hi,

I'm trying to take keyboard inputs to make changes to a turtle from the 'Turtle' graphics in Python.

I'm not able to register keyboard inputs for the code I've written. I've tested out the examples that had been provided online, and they seem to work fine. I'm not quite sure where I'm going wrong.

Please have a look at the code and let me know your thoughts:

Code:
import turtle

t = turtle.Turtle()

turtle.setup(1200,720)

t.pensize(3)
t.color("red")
t.speed(3)
t.shape()

colour = ["red","green","blue"]        #turtle can be of three colours

wn = turtle.Screen()
wn.title("Turtle Lives!")


def change_colour(t,k):                #change colour of turtle according to array
    t.color(colour[k])

pen_size = 3

def change_size(t,k):                #increase / decrease turtle pen_size
    global pen_size                    #modifying global pen_size variable
    if pen_size > 0:
        if k==1:
            pen_size +=1
        elif k==0:
            pen_size -=1
    t.pensize(pen_size)


wn.onkey(change_colour(t,0),"r")    #Change colour
wn.onkey(change_colour(t,1),"g")
wn.onkey(change_colour(t,2),"b")

wn.onkey(change_size(t,1),"+")        #Increase / Decrease size
wn.onkey(change_size(t,0),"-")

wn.listen()
wn.mainloop()
 

Answers and Replies

  • #2
Hi,

I've identified the bug: the onkey() function isnt passing arguments through to the code.

I.e.
Code:
wn.onkey(change_size(t,1) ,"+")

#has to be altered to

change_size(change_size,"+")
How can I pass these arguments through the keyboard inputs?[/code]
 
  • #3
34,152
5,768
Hi,

I've identified the bug: the turtle.onkey() function isnt passing arguments through to the code.

I.e.
Code:
wn.onkey(change_size(t,1) ,"+")

#has to be altered to

change_size(change_size,"+")
How can I pass these arguments through the keyboard inputs?[/code]
According to the Python 3.4.2 documentation that I have, the onkey() event handler (I think this is the right terminology) takes two arguments. The first is the name of a function, with no arguments, and the second is the key you're interested in.
 

Related Threads on Event Handling Code (basic)

Replies
11
Views
1K
Replies
3
Views
3K
Replies
7
Views
11K
Replies
6
Views
36K
  • Last Post
Replies
7
Views
3K
  • Last Post
Replies
0
Views
1K
Replies
8
Views
5K
Replies
22
Views
886
  • Last Post
2
Replies
31
Views
4K
Replies
3
Views
4K
Top