2013-04-09 1 views
1

내 문제는 내 CS 클래스에 대한 그림을 만들어야하며 실제로 거북이를 추정하는 것은 실망 스럽다. 나는 위치를 보여주기 위해 .onclick()을 사용할 계획이었다.turtle.onclick을 사용하는 Python 3.0

거북이 설명서는 두 변수를 사용하는 함수에서 좌표를 전달할 것입니다.

http://docs.python.org/3.1/library/turtle.html#turtle.onclick

참고 : 나는 화살표 머리에 클릭 할 때 작동하지만, 내가 원하는 걸하지 이잖아. 화면에서 다른 위치를 클릭하여 화살표를 보내야하는 좌표를 찾으려고합니다!

도움을 주시면 감사하겠습니다.

+0

여기서 질문은 무엇입니까? –

+0

나를 위해 작동합니다. 거북이와 올바르게 연결되어 있습니까? 'print' 문이 쓸 곳은 어디입니까? –

+0

좋아, 나는 그것을 밖으로 테스트하고 위의 메모를 추가했습니다. 나는 화살 머리를 클릭하고 싶지 않다.화살표 머리가 아닌 공백을 클릭하여 화살표 헤드를 보내려는 좌표를 찾을 수 있습니다. – Shaw

답변

0

좋아, 나는 주변의 일을 알아 냈다. 완벽한 솔루션은 아니지만 잘 작동합니다. onclick은 화살표 머리를 클릭하는 경우에만 응답하므로 전체 화면에 화살표 머리를 표시했습니다. 그럼 내가 숨 겼어. 당신이해야 할 일은 당신이 가고자하는 위치 위로 마우스를 가져 가서 "a"를 누르면 화면이 검은 색으로 변합니다. 그러면 쉘은 필요한 좌표를 표시합니다. 항상 (1000,0)로 돌아가십시오.

import turtle as t 

def showTurtle(): 
    t.st() 
    return 

def getPos(x,y): 
    print("(", x, "," ,y,")") 
    return 

def hideTurtle(x,y): 
    t.ht() 
    return 

def main(): 
    t.speed(20) 
    t.shapesize(1000,1000) 
    t.up() 
    t.goto(1000,0) 
    t.ht() 
    t.onkey(showTurtle,"a") 
    t.listen() 
    t.onclick(getPos) 
    t.onrelease(hideTurtle) 
    t.mainloop() 
main() 

또한, 내 클래스의 경우 사람이 발견, 나는 빙엄 턴에서 CS 학생이고 당신이 사용하는 경우 I는 흔적을 남기지 않고 좋습니다. 교수는 이것을보고 그것을 인식 할 것입니다.

0

해결 방법은 스스로 해결할 수 있습니다.

turtle에 대한 문서를 한번 보셨습니까? 당신이 모듈에서 screen뿐만 아니라 turtle를 가져올 수 있습니다처럼

http://docs.python.org/2/library/turtle.html

보인다. screen은 자신이 원하는 이벤트를 수행하는 onclick 이벤트를 가지고 있습니다.

참고 screen 개체에 액세스하는 방법에 대한 다음 줄

The function Screen() returns a singleton object of a TurtleScreen subclass. 
This function should be used when turtle is used as a standalone tool for 
doing graphics. As a singleton object, inheriting from its class is not 
possible. 

면책 조항 : 내가 전에 거북을 사용한 적이 없으니까.

+0

나는 그것을 살펴 봤다. 그게 효과가 있는지 나는 알 수 없었다. 그것은 그것이하는 말을하는 것처럼 보이지 않습니다. 시도해 줘서 고마워. – Shaw

1

Screen 클래스를 사용해야합니다. 그러나 OOP를 사용하지 않으려면 내장 메서드 turtle.onscreenclick (func)을 사용할 수 있습니다.

는 먼저 거북이가 그리기되는 화면 개체를 얻을 다음 화면 개체의() onclick을 호출해야

def main(): 
    t.onscreenclick(getPos) 
    t.mainloop() 
main() 
0

def main(): 
    t.onclick(getPos) 
    t.mainloop() 
main() 

를 교체합니다. 다음은 그 예입니다.

import turtle as t 

def getPos(x,y): 
    print("(", x, "," ,y,")") 
    return 

def main(): 
    s = t.getscreen() 
    s.onclick(getPos) 
    t.mainloop() 

main()