我正在使用Python 2.7乌龟图形制作一个简单的鼠标传感器,只要按住鼠标按钮即可绘制。由于我的功能基于用户,因此在您运行它时会立即崩溃。我发现turtle.exitonclick()
将有助于保持界面的打开状态,但是我无法进行绘制,因为我的绘制已绑定到鼠标左键单击上。有什么解决方法可以解决此问题,或者可以将turtle.exitonclick()
重新绑定到其他东西吗?这是我的代码:
import turtle
wn = turtle.Screen()
wn.bgcolor("lightblue")
#wn.screensize(400,300)
turtle.setup(400,300)
draw = turtle.Turtle()
def gothere(event):
draw.penup()
draw.goto(event.x-360, 340-event.y)
draw.pendown()
#draw.color(blue)
def movearound(event):
draw.goto(event.x-360, 340-event.y)
draw.color(blue)
def release(event):
draw.penup()
def reset(event):
draw.clear()
cavset = turtle.getcanvas()
cavset.bind("<Button-2>", gothere)
cavset.bind("<B1-Motion>", movearound)
cavset.bind("<ButtonRelease-2>", release)
cavset.bind("<Escape>", reset)
wn.listen()
wn.exitonclick()
(我正在通过命令提示符运行,顺便说一句。)
答案 0 :(得分:0)
您最可能想要的是:
turtle.mainloop()
代替:
wn.exitonclick()
这是exitonclick()
在为“ onclick”部分设置处理程序后调用的内容。
但是,还有其他问题。您似乎在混合三种不同的编码模型:乌龟的功能接口;面向对象的乌龟接口;呼唤乌龟的Tkinter基础。
让我们简化一下,只使用面向对象的界面来实现乌龟:
from turtle import Turtle, Screen, mainloop
def gothere(x, y):
draw.penup()
draw.goto(x, y)
draw.pendown()
def movearound(x, y):
draw.ondrag(None) # disable handler in handler!
draw.color("blue")
draw.goto(x, y)
draw.ondrag(movearound)
def release(x, y):
draw.penup()
def reset():
draw.clear()
wn = Screen()
wn.setup(400, 300)
wn.bgcolor("lightblue")
draw = Turtle()
wn.onclick(gothere, 2)
draw.ondrag(movearound)
draw.onrelease(release, 2)
wn.onkey(reset, "Escape")
wn.listen()
mainloop()
我相信Python 3乌龟会调整乌龟事件接口,以添加一些方法并为其他名称使用更清晰的名称。