所以我从 2.6 升级到 python 3.1.1 并运行了我的一个使用 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])
在旧版本中没问题。我不确定发生了什么变化,因此我获取每个坐标的方式是不可能的。
".find_enclosed ( x1, y1, x2, y2 ) 返回完全出现在左上角为 (x1, y1) 且右下角为 (x2, y2) 的矩形内的所有对象的对象 ID 列表。
.find_overlapping ( x1, y1, x2, y2 ) 与前面的方法类似,但返回与给定矩形共享至少一个点的所有对象的对象 ID 列表。”
有想法该怎么解决这个吗?如果您需要更多信息,请告诉我。我拥有的 tkinter 版本是 8.5,我有空闲的 3.1.1 和 python 3.1.1。我知道我提供的 pdf 链接适用于 8.4,但我无法想象这些功能发生了变化。
谢谢!