2017-11-20 1 views
1

거북의 클릭 한 점의 좌표를 기준으로 값이 할당 된 변수의 값을 인쇄하려고합니다.onscreenclick()과 mainloop() 사이의 명령문이 실행되지 않는 이유는 무엇입니까?

import turtle as t 
position=0 
j=0 
def get(a,b): 
    print("(", a, "," ,b,")") 
    global position 
    if b>0: 
     if a<0: 
      position=1 
     else: 
      position=2 
    else: 
     if a<0: 
      position=3 
     else: 
      position=4 

def main(): 
    global j 
    j = j+1 
    t.onscreenclick(get) 
    print(position) 
    t.mainloop() 

main() 

그러나 아무것도 실행 가져옵니다 t.onscreenclick()t.mainloop() 사이 (나는 다른 함수 등을 호출과 같은 다른 것들을 시도)?

답변

0

onscreenclick 클릭을 기다리지 마십시오. 클릭 할 때 실행해야하는 기능은 mainloop입니다. mainloop 모든 물건을한다 -. 그것은 등, 메인 윈도우를 만들고 운영 시스템에서 마우스/키보드 이벤트를 가져옵니다 창에서 요소/위젯에 이벤트를 전송하여 onscreenclick/ontimer/등 할당 된 기능을 실행, 화면에 요소를 다시 그립니다

그래서 mainloop 창이 열리기 전에 print(position)이 실행됩니다.
당신은 그것을 삭제에 대한 get()

import turtle as t 

# --- functions --- 

def get(x, y): 

    print("(", x, ",", y, ")") 

    if y > 0: 
     if x < 0: 
      position = 1 
     else: 
      position = 2 
    else: 
     if x < 0: 
      position = 3 
     else: 
      position = 4 

    print('pos:', position) 

# --- main --- 

# inform mainloop what function use when you click 
t.onscreenclick(get) 

# start "the engine" (event loop) 
t.mainloop() 
+0

감사 내부에 인쇄 할 수 있습니다. 그러나 모든 클릭 후 매개 변수로 position과 함께 다른 함수를 사용하려면 get() 내부에서 해당 함수를 호출해야합니까, 아니면 다른 방법이 있습니까? –

+0

예,'get()'에서 사용해야합니다. 가장 자연스러운 방법입니다. – furas

관련 문제