Python tkinter : how to restrict mouse cursor within canvas?

标签 python tkinter canvas mouse-cursor

我使用 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/

相关文章:

python 父目录

javascript - 某些变换是否适用于文本而不适用于矩形?

python - 在 Python 中单击按钮时隐藏标签

python - 无法使用 Tkinter 打印出 "event.char"

javascript - 如何在 Canvas 中显示组和非组形状的尺寸

HTML5 Canvas 旋转图像

python - 将 BytesIO 转换为文件

python - 在 Twisted 透视代理中调用客户端的远程方法

Python 习语获得与多次调用 os.path.dirname 相同的结果?

python - 使用 Tkinter 时出现“self”未定义错误