我正在尝试制作一个能够拖放到画布上的列表框。我以前做过拖放,但它只是在 canvas.create_text 之间松散地基于我在这里找到的这个检查程序的代码。我见过几个关于拖放列表框的问题,但它们只处理更改列表框中元素的顺序。我正在处理的是一个列表框,它有一个名称列表,以及一个在画布上带有一些 create_text 对象的画布,我希望能够将一个名称从列表框中拖到画布上。如果图我需要创建一个 Listbox 子类,但我不确定从那里去哪里。
所以我有一个 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