Когда я запускаю сценарий, который я создал, я получаю очень странную ошибку. Я накладываю две функции, move() и moveWithMouse(). Соответствующий код размещен здесь:Странная ошибка черепахи при использовании функций потоковой передачи
def moving():
# Clearing the canvas and hiding the turtle for the next iteration of moving()
turtle.clear()
turtle.hideturtle()
# Drawing all of the circles
for i in range(len(xCoordinate)):
turtle.penup()
turtle.goto(xCoordinate[i], yCoordinate[i])
turtle.pendown()
turtle.fillcolor(color[i][0], color[i][1], color[i][2])
turtle.begin_fill()
turtle.circle(10)
turtle.end_fill()
xCoordinate[i] += speed1[i]
yCoordinate[i] += speed2[i]
turtle.update()
turtle.ontimer(moving, 10)
Код для следующей функции:
def moveWithMouse():
while True:
user = win32api.GetCursorPos()
mousepos = [user[0]-520,-1*(user[1])+ 415]
turtle.goto(mousepos)
turtle.onclick(turtle.pendown())
Тогда я нить, обе эти функции следующим образом:
if __name__ == '__main__':
Thread(target = moving).start()
Thread(target = moveWithMouse).start()
И это даст мне это ошибка (очень длинная, но я все еще думаю, что размещать все это необходимо):
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python32\lib\threading.py", line 736, in _bootstrap_inner
self.run()
File "C:\Python32\lib\threading.py", line 689, in run
self._target(*self._args, **self._kwargs)
File "C:\Python33\Circles with Collision Detection.py", line 57, in moving
turtle.circle(10)
File "<string>", line 1, in circle
File "C:\Python32\lib\turtle.py", line 1991, in circle
self._go(l)
File "C:\Python32\lib\turtle.py", line 1605, in _go
self._goto(ende)
File "C:\Python32\lib\turtle.py", line 3159, in _goto
screen._pointlist(self.currentLineItem),
File "C:\Python32\lib\turtle.py", line 755, in _pointlist
cl = self.cv.coords(item)
File "<string>", line 1, in coords
File "C:\Python32\lib\tkinter\__init__.py", line 2162, in coords
self.tk.call((self._w, 'coords') + args))]
File "C:\Python32\lib\tkinter\__init__.py", line 2160, in <listcomp>
return [getdouble(x) for x in
ValueError: could not convert string to float: 'coords'
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Python32\lib\threading.py", line 736, in _bootstrap_inner
self.run()
File "C:\Python32\lib\threading.py", line 689, in run
self._target(*self._args, **self._kwargs)
File "C:\Python33\Circles with Collision Detection.py", line 128, in moveWithMouse
turtle.goto(mousepos)
File "<string>", line 1, in goto
File "C:\Python32\lib\turtle.py", line 1774, in goto
self._goto(Vec2D(*x))
File "C:\Python32\lib\turtle.py", line 3159, in _goto
screen._pointlist(self.currentLineItem),
File "C:\Python32\lib\turtle.py", line 755, in _pointlist
cl = self.cv.coords(item)
File "<string>", line 1, in coords
File "C:\Python32\lib\tkinter\__init__.py", line 2162, in coords
self.tk.call((self._w, 'coords') + args))]
_tkinter.TclError: ambiguous option "": must be addtag, bbox, bind, canvasx, canvasy, cget, configure, coords, create, dchars, delete, dtag, find, focus, gettags, icursor, index, insert, itemcget, itemconfigure, lower, move, postscript, raise, scale, scan, select, type, xview, or yview
Похоже, что это говорит о наличии проблемы с операторами goto в обеих функциях. Обе эти функции работают, когда я их не вставляю, но с резьбой, они, похоже, дают эту очень странную ошибку. Любые идеи почему?
Спасибо! Это не очень помогает, но, по крайней мере, это показывает, почему проблема существует. –
Вы пытаетесь нарисовать круг, где пользователь нажимает мышь? В этом случае вместо вызова команд 'turtle' внутри' moveWithMouse' просто измените 'xCoordinate' и' yCoordinate' и пусть 'move' выполнит весь чертеж. – unutbu
Это не то, что я пытаюсь сделать. Я пытаюсь создать еще один мяч каждые 5 секунд. –