здесь идет мой первый в истории вопрос, я делаю основной logplayer из данных в текстовом файле:
код выглядит примерно так:
for aircraft in self.logArray.itervalues():
for logLine in aircraft:
currentPoint = self.point(logLine[1], logLine[2])
currentPoint = self.win2canvas(currentPoint)
points = np.append(points, currentPoint)
print points
print np.size(points)
self.canvas.create_line(points)
points = np.array([])
Таким образом, logArray - это словарь, каждыйname содержит массив вида [time, x, y], поэтому для каждого имени самолета будет такой же массив.
Второе значение for просто преобразует координаты холста в tkinter и добавляет текущую точку к предварительносуществующий (и инициализированный).
Когда доходит до метода create_line, я получаю:
File "/home/joao/tese/workspace/ATC/src/autoATC/LogPlayer.py", line 131, in drawPath
self.canvas.create_line(points)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2204, in create_line
return self._create('line', args, kw)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2192, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: wrong # coordinates: expected an even number, got 399
Я вручную проверил размер массива точек и действительно даже нумеруется.Поэтому я дважды проверил, используя np.size, который вернул 398!
Я также попытался использовать очень похожий подход к тестированию, выполнив:
self.canvas.create_line([123,345,234,453,23,34,45,56,67,78])
, который прошел отлично!Я не понимаю почему, но каким-то образом мой массив точек заканчивает тем, что получает дополнительный элемент, и я не знаю, откуда!
Спасибо за ваше время и терпение!