Python turtle.ondrag不工作
我一直在尝试用Python Turtle制作一个绘画程序,但由于某些原因,它无法工作。我正在使用钢笔工具,我的代码如下所示Python turtle.ondrag不工作,python,python-2.7,turtle-graphics,Python,Python 2.7,Turtle Graphics,我一直在尝试用Python Turtle制作一个绘画程序,但由于某些原因,它无法工作。我正在使用钢笔工具,我的代码如下所示 from turtle import * import random pen() bgcolor('black') pencolor('white') pen.ondrag(pen.goto) listen() mainloop() 我看了这个,上面写着要输入turtle.ondragturl.goto,但是因为我用的是笔,所以它应该和pen.ondrag一样工作,但是
from turtle import *
import random
pen()
bgcolor('black')
pencolor('white')
pen.ondrag(pen.goto)
listen()
mainloop()
我看了这个,上面写着要输入turtle.ondragturl.goto,但是因为我用的是笔,所以它应该和pen.ondrag一样工作,但是它没有,所以请有人把它清理一下
谢谢Jellominer我将简化并澄清提问者给出的代码:
from turtle import *
ts = Screen(); tu = Turtle()
ts.listen()
ondrag(tu.goto)
mainloop()
这很有效。你必须点击乌龟并拖动它。首先,笔不是你想要的功能。第二,虽然笔是乌龟的同义词,但笔不是乌龟的同义词。如果你想用钢笔而不是乌龟,下面介绍如何使用ondrag:
goto在文档中是一个很好的简短示例,但实际上并不实用。您希望在处理事件时禁用事件处理程序,否则事件会堆积起来。当你拖动鼠标时,把鼠标朝着你的光标移动是很好的
from turtle import *
ts = Screen()
ondrag(goto)
shapesize(10)
pensize(40)
speed(0)
mainloop()
我认为这肯定会奏效
您可以更改大小和其他内容
在这里,您使用的是默认的海龟
很抱歉,您需要处理缩进问题请发布整个代码。什么是钢笔?你是说方法吗?这不是一个对象,您不能将其与goto或ondrag一起使用lines@Jellominer要重复凯文说过的话,你需要告诉我们什么是钢笔。如果您所指的是方法turtle.pen,那么它没有ondrag属性是有道理的。如果你能描述一下你的程序应该做什么,我们会帮你的。ondrag不是pen方法,所以pen.ondrag没有多大意义。乌龟。乌龟是不同的,它在乌龟进口中找到了乌龟。我认为,如果您首先在代码中为每个单独的对象指定一个名称以供使用,事情会变得容易得多:比如screen=screen和/或brush=Turtle,这样您就可以说brush.ondragbrush。goto@Meep尝试了你所说的,程序运行,但乌龟没有移动到我单击的位置。命令。侦听对于键盘事件是必需的,不是鼠标事件,所以你不需要ts。同样,你也不需要tu,因为你可以简单地说ondraggoto,因为你导入了*并且可以使用默认的turtle。当然,这种方法不太管用。但它很简单。实际上,这段代码并不真正有效。在声明ondragtu.goto中,您正在谈论两种不同的海龟,即要求默认海龟拖动您的海龟。你可以看到这一点,如果你把海龟拖向窗口的角落。然后试着再拖一次那只乌龟——它不起作用了。你必须回到窗口中心不移动的乌龟,再次拖动另一只乌龟。这就是使用import*时会发生的情况——混淆了函数接口和面向对象的海龟接口。我重新复制了一个文件,并在Python2和Python3下运行,我支持我的主张。我在Unix下的终端窗口中运行,您是否正在使用其他环境?goto调用涉及两个海龟,ondrag是一个在默认海龟上运行的函数。goto在您创建的海龟上调用一个方法。两者都在屏幕上处于活动状态。有关这种二元性的解释,请参见。你试过我描述的练习吗?初始拖动后没有看到两个三角形吗?好的,不需要“侦听”。但它不会产生错误,最重要的是,代码可以正常工作!YouI真的很沮丧,因为ondrag有时似乎工作,有时不工作!最后,我阅读了@Apostolos的建议,如果你点击屏幕,你必须点击乌龟,但不是乌龟,ondrag将不起作用!非常违反直觉。不,没有任何屏幕。所以你完蛋了,除非你想把海龟弄大,所以你不得不点击它。
from turtle import *
ts = Screen()
ondrag(goto)
shapesize(10)
pensize(40)
speed(0)
mainloop()