Python turtle.ondrag无法正常工作

时间:2013-11-08 19:54:16

标签: python python-2.7 turtle-graphics

我一直在尝试用Python Turtle制作一个绘图程序,由于某种原因它不起作用。我正在使用pen()工具,我的代码看起来像这样

from turtle import *
import random

pen()
bgcolor('black')
pencolor('white')
pen.ondrag(pen.goto)
listen()
mainloop()

我看看这个http://docs.python.org/2/library/turtle.html并且它说要输入turtle.ondrag(turtle.goto)但是因为我正在使用它它应该像pen.ondrag一样工作但它没有,所以可以有人请清除它。

谢谢Jellominer

3 个答案:

答案 0 :(得分:0)

首先,pen()不是您想要的功能。其次,虽然PenTurtle的同义词,但pen不是turtle的同义词。如果您想使用ondrag()代替Pen,请按以下步骤使用Turtle

from turtle import Pen, Screen, mainloop

def ondrag_handler(x, y):
    pen.ondrag(None)  # disable handler inside handler

    pen.setheading(pen.towards(x, y))  # turn toward cursor
    pen.goto(x, y)  # move toward cursor

    pen.ondrag(ondrag_handler)

screen = Screen()
screen.bgcolor('black')

pen = Pen()
pen.color('white')
pen.shapesize(2)  # make it larger so it's easier to drag

pen.ondrag(ondrag_handler)

screen.listen()
mainloop()  # screen.mainloop() preferred but not in Python 2

turtle.ondrag(turtle.goto)在文档中提供了一个很好的简短示例,但实际上并不实用。您希望在处理事件时禁用事件处理程序,否则事件将对您不利。在拖动鼠标时将鼠标移向光标会很不错。

答案 1 :(得分:0)

from turtle import *
ts = Screen()
ondrag(goto)
shapesize(10)
pensize(40)
speed(0)
mainloop()

我认为这一定可以。

您可以更改大小和其他内容 在这里,您使用的是默认的turtle。

抱歉,您需要注意缩进

答案 2 :(得分:-1)

我将简化并澄清提问者给出的代码:

from turtle import *

ts = Screen(); tu = Turtle()
ts.listen()
ondrag(tu.goto)
mainloop()

这很有效。你必须点击乌龟并拖动它。