我正在使用python中的绘图应用程序,最近我添加了一个mousedrag函数来制作它,以便你可以拖动它并绘制它。它经常会有点滞后,当我拖动它时可以朝其他方向走。这是代码:
import sys
import turtle
from tkinter import *
wn = turtle.Screen()
wn.title('Drawing Function!')
wn.bgcolor('blue')
ashton = turtle.Turtle()
ashton.pencolor('lime')
ashton.shape('turtle')
def turtleWrite():
pass
def turtleForward():
ashton.forward(30)
def turtleLeft():
ashton.left(45)
def turtleRight():
ashton.right(45)
def closeWindow():
wn.bye()
def penup():
ashton.penup()
def pendown():
ashton.pendown()
def clear():
ashton.clear()
def stamp():
ashton.stamp()
def undo():
ashton.undo()
ashton.ondrag(ashton.goto)
wn.onkey(turtleForward, 'Up')
wn.onkey(turtleLeft, 'Left')
wn.onkey(turtleRight, 'Right')
wn.onkey(closeWindow, 'q')
wn.onkey(penup, 'u')
wn.onkey(pendown, 'd')
wn.onkey(clear, 'c')
wn.onkey(stamp, 's')
wn.onkey(undo, 'BackSpace')
wn.listen()
wn.mainloop()
有没有人知道为什么会发生这种情况,如果有的话,我该如何修复它们?
谢谢!
答案 0 :(得分:2)
当建议turtle.ondrag(turtle.goto)
手绘时,龟文档有点过于简单了。要使其工作,您需要定义自己的事件处理程序,在处理时立即禁用拖动事件,移动乌龟,然后在退出时重新启用拖动事件:
import turtle
wn = turtle.Screen()
wn.title('Drawing Function!')
wn.bgcolor('blue')
ashton = turtle.Turtle()
ashton.pencolor('green')
ashton.shape('turtle')
def drag_handler(x, y):
ashton.ondrag(None) # disable event inside event handler
ashton.goto(x, y)
ashton.ondrag(drag_handler) # reenable event on event handler exit
ashton.ondrag(drag_handler)
wn.onkey(lambda: ashton.forward(30), 'Up')
wn.onkey(lambda: ashton.left(45), 'Left')
wn.onkey(lambda: ashton.right(45), 'Right')
wn.onkey(lambda: wn.bye(), 'q')
wn.onkey(lambda: ashton.penup(), 'u')
wn.onkey(lambda: ashton.pendown(), 'd')
wn.onkey(lambda: ashton.clear(), 'c')
wn.onkey(lambda: ashton.stamp(), 's')
wn.onkey(lambda: ashton.undo(), 'BackSpace')
wn.listen()
wn.mainloop()
我的系统被笔颜色和石灰炸掉了#39; (" TurtleGraphics错误:颜色不好的字符串:石灰")所以我不得不替换绿色'对于这个例子。