Python tkinter:如何将鼠标光标限制在 canvas 内?

Python tkinter: how to restrict mouse cursor within canvas?

我使用 tkinter 的 canvas 加载图像并在其上绘制矢量(使用 create_line)。

我想在绘制这个矢量时限制鼠标移动,这样它就不会被拖到图像区域之外,无论它是什么。鼠标光标应该刚好回到图像边界。

我尝试搜索,找到了各种处理方法,理想情况下这需要跨平台。到目前为止,我无法使这些不同的工作方式中的任何一种......所以我恳请寻求帮助!谢谢:)

好吧,最后我决定不在物理上限制鼠标光标(通过强制它不超过某些坐标),而是在虚拟上(通过将鼠标位置存储到一个变量,然后在边界周围进行 if-elseing它需要留在其中的盒子)。所以鼠标光标可以随心所欲,但当它实际在其中绘制内容时 - 它停留在我想要的指定区域内。

在 Canvas 上绘制线条是任务,在加载的图像上。线不应越过图像的边界。结果是这样的:

imgsize = (int(self.viewport.cget('width')) - 1,int(self.viewport.cget('height')) - 1)
# limit the draggable mouse area to just the image dimensions
if event.x < 4:
    currentx = 4
elif event.x > imgsize[0]:
    currentx = imgsize[0]
else:
    currentx = event.x
if event.y < 4:
    currenty = 4
elif event.y > imgsize[1]:
    currenty = imgsize[1]
else:
    currenty = event.y

然后从那一点开始 create_line 时间。