【问题标题】:Python tkinter: how to restrict mouse cursor within canvas?Python tkinter:如何在画布内限制鼠标光标?
【发布时间】:2015-07-16 12:06:53
【问题描述】:

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

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

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

【问题讨论】:

  • 你找到了哪些方法?这可能会省去发布您已经拒绝的解决方案的麻烦。
  • 那就是:stackoverflow.com/a/16704353/5060127 我似乎无法找到一种方法让它适用于我的画布,将鼠标光标移动限制在其边界内。 :(

标签: python tkinter canvas mouse-cursor


【解决方案1】:

好的,最后我决定不物理限制鼠标光标(通过强制它不超出某些坐标),而是虚拟地(通过将鼠标位置存储到变量,然后在边界框周围 if-elseing它需要留在)。因此,鼠标光标可以移动到它想要的任何地方,但是当它实际绘制某些东西时 - 它会停留在我想要它的指定区域内。

在画布上画线是任务,在加载的图像上。线不应通过图像的边界。结果是这样的:

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 时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多