【发布时间】:2010-11-27 05:48:20
【问题描述】:
所以我从 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,但我无法想象这些功能发生了变化。
谢谢!
【问题讨论】:
-
我不知道你是否注意到了,但我的回答现在包含了这个问题的解决方案。我会说这个问题已经用尽了。
-
我注意到了。我正试图让它工作。如您所知,我是初学者。
标签: python python-3.x tkinter typeerror