キャンバスにドラッグアンドドロップできるリストボックスを作成しようとしています。以前にドラッグアンドドロップを行ったことがありますが、ここで見つけたこのチェッカープログラムのコードに基づいて大まかにcanvas.create_textの間だけでした。ドラッグ アンド ドロップ リストボックスに関するいくつかの質問を見てきましたが、それらはリストボックス内の要素の順序の変更のみを扱っています。私が扱っているのは、名前のリストを持つリストボックスと、キャンバス上にいくつかの create_text オブジェクトを持つキャンバスであり、リストボックスからキャンバスに名前をドラッグできるようにしたいと考えています。図の場合、リストボックスのサブクラスを作成する必要がありますが、そこからどこに行くべきかわかりません。
だから私はDialogWindow(Toplevelのサブクラス)を持っていて、DialogWindowにキャンバスとリストボックスを持っています。リストボックスから名前を取得する方法を考え出しました。名前をクリックすると、それを canvas.create_text オブジェクトに変換してからドラッグします。私の問題はドロップです。canvas.canvasx を使用してキャンバス座標に変換しようとしましたが、うまくいきませんでした。x と y はまだリストボックス座標にあります。
def onRelease(self, event):
x = self.canvas.canvasx(event.x)
y = self.canvas.canvasx(event.y)
print(event.x, event.y)
print(x, y) #Prints the same thing as the previous line