如何解决使用 python 3 龟 onscreenclick 方法无法返回值
使用 onclicks 方法修改我的第一个 python 海龟程序(它有效)失败。 我无法让它返回在函数之外使用的值。 很明显,我需要更好地理解作用域和变量。 但仍然无法返回(我在一个小测试程序中使用了 return ok)。 这是我的代码,除了返回之外还可以工作。
import turtle
screen=turtle.Screen();t1=turtle.Turtle()
x1=y1=x2=y2=0;clicks=0
def mouse_click(x,y):
global clicks,x1,y1,x2,y2
clicks = clicks + 1
t1.penup()
screen.onscreenclick(None)
t1.goto(x,y)
screen.onscreenclick(mouse_click)
if clicks==2:#bypass clicks==1 as automatic at start giving unwanted 0,0
x1 = t1.xcor()
y1 = t1.ycor()
if clicks==3:
x2 = t1.xcor()
y2 = t1.ycor()
if clicks==4:
turtle.exitonclick()
print("inside x1 y1 x2 y2",clicks,y2)
return clicks,y2
#MAIN
#get clicks screen.onscreenclick(mouse_click)
#get returned coordinates for further use - doesnt work! clicks,y2=mouse_click(x1,y1) print("outside clicks x1 y1 x2 y2",y2)
#end screen.mainloop()
解决方法
您需要在每行前放置 4 个空格,以保留格式。
您似乎正在尝试生成几个 XY 坐标对。
并不是说回调有内循环和外循环。 https://en.wikipedia.org/wiki/Callback_(computer_programming)
这就是您已绑定到 onscreenclick()
的内容。您需要考虑点击次数,并从那时起更改回调中发生的情况...
或者完全重新定义你的回调,如果绝对需要的话。 turtle.onscreenclick(new_callback_function,add=False)
#! /usr/bin/python3
from turtle import Turtle,Screen
turtle,screen = Turtle(),Screen()
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clicks,x1,y1,x2,y2 = 0,0
turtle.penup()
def click_callback( x,y ):
global clicks,y2
clicks = clicks +1
## modulo: divide by 2,check the remainder
if clicks %2 == 1: ## odd step
x1,y1 = x,y
turtle.goto( x1,y1 )
print( f"odd click {clicks}: {x1},{y1},{x2},{y2}" )
else: ## even step
x2,y2 = x,y
turtle.goto( x2,y2 )
print( f"even click {clicks}: {x1},{y2}" )
## return clicks,y2
screen.onscreenclick( click_callback )
screen.mainloop()
## eof ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。