Все еще пишу игру.Эта ошибка немного отличается, хотя.Я получаю след обратно, как это ...
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/tkinter/__init__.py",
line 1399, in __call__
return self.func(*args)
File "/Users/bluedragon1223/Desktop/Djambi0-2.py", line 68, in _newSpaceChosen
pieceID = event.widget.find_withtag(currentCommand)
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/tkinte/__init__.py",<br>
line2199, in find_withtag
return self.find('withtag', tagOrId)
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/tkinter/__init__.py",
line 2173, in find
self.tk.call((self._w, 'find') + args)) or ()
_tkinter.TclError: wrong # args: should be ".23215664 find withtag tagOrId"
Я имею в виду, я думал, что код достаточно безвреден.
У меня есть глобальные переменные currentCommand = None
и (CurX, CurY) = (0,0)
и (ToX, ToY) = (0,0)
для начала, если это как-то связано с этим, но главная проблема - мои события.
Их два:
def _newSpaceChosen(event):
print(event.widget.find_withtag('rN')) #Used to check if I had used find_withtag correctly
pieceID = event.widget.find_withtag(currentCommand) #This is the problem source
[CurX, CurY] = event.widget.coords(pieceID[1])
print(CurX, CurY)
[MetaToX, MetaToY] = _point2square(event.x, event.y)
print(event.x, event.y)
print(MetaToX, MetaToY)
[ToX, ToY] = _square2point(MetaToX, MetaToY)
print(ToX, ToY)
event.widget.move(pieceID, ToX - CurX, ToY - CurY)
def _onPieceClick(event):
stuffTags = event.widget.gettags(event.widget.find_closest(event.x, event.y))
try:
event.widget.delete(event.widget.find_withtag('bbox'))
except:
pass
bboxULX = (event.x // 90 + 1) * 90
bboxULY = (event.y // 90 + 1) * 90
bboxLRX = (event.x // 90 + 1) * 90 - 90
bboxLRY = (event.y // 90 + 1) * 90 - 90
event.widget.create_rectangle(bboxULX,bboxULY,bboxLRX,bboxLRY, width=3,
outline='yellow',tag='bbox')
currentCommand = stuffTags[0]
print(currentCommand)`
Идея состояла в том, чтобысохраните тег игровой фигуры в currentCommand
, а затем используйте это значение для управления этой конкретной фигурой до тех пор, пока фигура не будет перемещена с такими привязками:
canvas.bind('<1>', _newSpaceChosen)
в def __init__(self, mainWin):
class Board(Canvas):
каждогоу части есть своя собственная tag_bind(#piece-var, '<1>', _onPieceClick)
Моя гипотеза состоит в том, что currentCommand
недостаточно быстро получает значение.Как вы думаете, что вызывает этот след?