所以我正在使用Python 3.7和tkinter。我希望能够在更大的画布上拖动框架或画布。我将代码放在一起,效果很好。问题是拖动看起来不是特别好。假设我将一个小部件拖动到右侧-在移动时失去了右侧。我停下来时当然会回来,但是这里肯定有一个问题。如果向下拖动,我会立即失去底侧。而且我拖动得越快,丢失的东西就越多。
我想知道这是否只是我的想象力,但是我能够在边框上添加边框并进行了尝试。由于边框是另一种颜色,因此我可以看到它在拖动过程中是否“消失”。是的,它确实。
肯定有办法使它看起来更...不好? tkinter甚至是正确的方法吗?我真正想要的是能够在更大的画布上拖动框架(或画布)并使它看起来有些平滑。但这确实很明显,我觉得应该解决。
根据要求,拖动代码:
class CanvasDragManager():
def __init__(self, canvasParent):
self.InitialX = 0
self.InitialY = 0
self.CanvasParent = canvasParent
self.CanvasWidgetID = -1
def addDraggable(self, widget, canvas_id):
widget.bind("<ButtonPress-1>", self.on_start)
widget.bind("<B1-Motion>", self.on_drag)
widget.bind("<ButtonRelease-1>", self.on_drop)
self.CanvasWidgetID = canvas_id
def on_start(self, event):
self.InitialX = event.x
self.InitialY = event.y
def on_drag(self, event):
canvasX, canvasY = self.CanvasParent.coords(self.CanvasWidgetID)
dragX = (event.x + canvasX) - self.InitialX
dragY = (event.y + canvasY) - self.InitialY
self.CanvasParent.coords(self.CanvasWidgetID, dragX, dragY)
def on_drop(self, event):
print('Dropped!')