, поэтому я обновился до python 3.1.1 с 2.6 и запустил старую программу, в которой используется tkinter.
Я получаю следующее сообщение об ошибке, которое я не помню, получая в версии 2.6.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python31\lib\tkinter\__init__.py", line 1399, in __call__
return self.func(*args)
File "C:\myprog.py", line 77, in <lambda>
self.canvas.bind("<Button-3>", lambda event: myfunc_sub(event))
File "C:\myprog.py", line 65, in myfunc_sub
temp_ids = self.canvas.find_overlapping(self.canvas.coords(name)[0], self.canvas.coords(name)[1], self.canvas.coords(name)[2],self.canvas.coords(name)[3])
TypeError: 'map' object is not subscriptable
Я уверен, что линия
temp_ids = self.canvas.find_overlapping(self.canvas.coords(name)[0], self.canvas.coords(name)[1], self.canvas.coords(name)[2],self.canvas.coords(name)[3])
было хорошо в старой версии. Я не уверен, что изменилось, поэтому способ получения каждой координаты невозможен.
из документов tkinter (pdf)
". Find_enclosed (x1, y1, x2, y2)
Возвращает список идентификаторов объектов всех объектов, которые находятся полностью внутри прямоугольника, левый верхний угол которого (x1, y1) и правый нижний угол которого (x2, y2).
.find_overlapping (x1, y1, x2, y2)
Как и предыдущий метод, но возвращает список идентификаторов объектов всех объектов, которые имеют хотя бы одну точку с данным прямоугольником. "
есть идеи как это исправить? пожалуйста, дайте мне знать, если вам нужно больше информации. у меня есть версия tkinter 8.5, у меня простоя 3.1.1 и python 3.1.1. я знаю, что предоставленная мною ссылка на pdf предназначена для 8.4, но я не могу представить, что в этих функциях произошло изменение.
спасибо!