我使用 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 时间。
关于Python tkinter : how to restrict mouse cursor within canvas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453708/