학번, 이름, 전공
def Color(): import random as r color=['yellow','red','blue','black','green'] #5색 return r.choice(color) def Shape(): import turtle as t import random as r t.up() t.onscreenclick(t.goto) #클릭한 곳으로 거북이 이동 t.pencolor(Color()) #펜 색깔 결정 t.down() t.speed('fastest') #가장 빠른 속도로 거북이 설정 shape = [0,3,4,5,6] result = r.choice(shape) line=r.randint(50,100) #50에서 100중에 random으로 반지름/변의 길이 설정 import turtle as t #turtle graphic import import random as r #random import t.onscreenclick(t.goto) Shape() if (t.onkeypress("Space")) : #Space를 눌렀을 때 채우기 함수 실행 t.onscreenclick(Fill()) if (t.onkeypress("Space")): t.onscreenclick(Shape()) if (t.onscreenclick("c")): Clear() t.mainloop()
it says that Exception in Tkinter callback Traceback (most recent call last): File “C:UserssuyeoAppDataLocalProgramsPythonPython39libtkinter_init_.py”, line 1892, in call return self.func(*args) File “C:UserssuyeoAppDataLocalProgramsPythonPython39libturtle.py”, line 674, in eventfun fun(x, y) TypeError: ‘str’ object is not callable
Advertisement
Answer
onscreenclick
and onkeypress
setup callbacks – functions that are called when those events happen. You only need to call these functions once for each event or key – unless you need to modify them. AFAIK, they don’t return any values. onscreenclick
takes one parameter: a function that takes 2 parameters, the x
and y
coordinates. onkeypress
takes 2 parameters: the callback function and the key.
import turtle as t import random as r def fill(): # TODO: Add your code here pass def clear(): # TODO: Add your code here pass def color(): color=['yellow','red','blue','black','green'] return r.choice(color) def shape(x, y): t.pencolor(color()) t.goto(x, y) t.speed('fastest') # Setup the callbacks. The first parameter to each is a function "pointer" t.onscreenclick(shape) t.onkeypress(fill, "space") t.onkeypress(clear, "c") shape(0, 0) t.listen() t.mainloop()