为什么onscreenclick()和mainloop()之间的语句不会被执行?

时间:2017-11-20 14:24:26

标签: python-2.7 turtle-graphics

我试图打印一个变量的值,该变量的值是根据乌龟中点击的点的坐标分配的。

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()之间没有(我尝试过调用其他函数等其他东西)会被执行吗?

1 个答案:

答案 0 :(得分:0)

onscreenclick不会等待您的点击。它只通知mainloop点击时必须执行的功能。 mainloop执行所有操作 - 它创建主窗口,从操作系统获取鼠标/键盘事件,将事件发送到窗口中的元素/窗口小部件,运行分配有onscreenclick / ontimer /等的函数。 ,重绘屏幕上的元素等。

所以在print(position)打开窗口之前执行mainloop 您必须在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()