Это кажется неправильным.Мне нравится объектное решение @ Blckknght (+1), но вы бы просто заменили глобальную переменную , содержащую экземпляр объекта, на глобальную переменную , связывающую позицию.
Если вы действительно хотите сделать что-то не так и избежать глобальной переменной, вы также можете сделать это неправильно - и что может быть более неправильным, чем опасное значение по умолчанию:
import turtle
def get_click_position(x=None, y=None, stash=[0, 0]): # dangerous default value
if x != None != y:
stash[0:] = (x, y)
return turtle.Vec2D(*stash)
def print_click_position():
x, y = get_click_position()
print('{0}, {1}'.format(x, y))
turtle.ontimer(print_click_position, 1000)
turtle.onscreenclick(get_click_position)
print_click_position()
turtle.mainloop()
Позвоните get_click_position()
без аргументов, если хотите узнать, что произошло последним кликом.Он будет возвращать этот результат до тех пор, пока не будет получен новый щелчок, когда get_click_position()
вызывается как обработчик событий с аргументами.