我正在尝试创建一个具有拖放功能的列表框,以便将其拖放到画布上。我之前做过拖放,但仅限于在canvas.create_text之间进行松散的拖放,基于我在这里找到的此checkers程序的代码。我看到了几个关于拖放列表框的问题,但它们只处理更改列表框中元素的顺序。我正在处理的是一个具有名称列表的列表框,以及一些create_text对象的画布,我想要能够从列表框拖动名称到画布上。我想我需要创建一个Listbox子类,但我不确定接下来该怎么做。
所以我有一个DialogWindow(Toplevel的子类),并且我的画布和列表框都在DialogWindow中。我已经想出了一种从列表框中获取名称的方法:当我点击名称时,我将其转换为canvas.create_text对象,然后拖动它。我的问题是投放。我尝试使用canvas.canvasx将其转换为画布坐标,但对我没有起作用。 x和y仍然在列表框坐标中。
所以我有一个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