そのため、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])
古いバージョンで大丈夫でした。何が変わったのかわからないので、各座標を取得する方法が不可能です。
tkinter ドキュメントから(pdf)
".find_enclosed ( x1, y1, x2, y2 ) 左上隅が (x1, y1) で右下隅が (x2, y2) の長方形内に完全に含まれるすべてのオブジェクトのオブジェクト ID のリストを返します。
.find_overlapping ( x1, y1, x2, y2 ) 前のメソッドと同様ですが、指定された長方形と少なくとも 1 つのポイントを共有するすべてのオブジェクトのオブジェクト ID のリストを返します。"
これを修正する方法についてのアイデアはありますか?さらに情報が必要な場合はお知らせください。私が持っている tkinter のバージョンは 8.5 で、アイドル状態の 3.1.1 と python 3.1.1 があります。私が提供したpdfリンクが8.4用であることは知っていますが、これらの機能に変更があったとは想像できません。
ありがとう!