繁体   English   中英

Tkinter-获取Label对象的x,y坐标

[英]Tkinter - Getting x,y coordinates of Label object

我已将Label对象定义为:

panel = Label(image_frame, image=self.img, cursor="cross")

现在,我想在此之上绘制多边形,并创建了一个名为draw()的函数,该函数绑定到画布,并允许我在其之上绘制多边形。 因此,我知道我的draw()命令有效。

但是,我需要在我定义为标签的面板顶部执行此操作。 我最大的问题是我的draw()命令中的这一行

if event.widget.canvasx(event.x)-2 < orig_x < event.widget.canvasx(event.x)+2 and event.widget.canvasy(event.y)-2 < orig_y < event.widget.canvasy(event.y)+2 :

我产生以下错误:

AttributeError:“标签”对象没有属性“ canvasx”

Label对象是否有canvasx的类似物? 如何在不更改Label情况下绕过它? 还是将Label更改为画布是我唯一的选择?

我唯一想到的另一件事是在Label后面有一个透明的画布,但是on-resize ,事情变得混乱了。

Label对象是否有canvasx的类似物? 如何在不更改标签的情况下绕过它? 还是将Label更改为画布是我唯一的选择?

不,因为没有必要。 canvasx存在,是因为画布可以在任何方向上滚动,并且您需要能够从小部件坐标转换为内部画布坐标。

对于标签,如果单击标签的0,0坐标,则它将始终是标签的左上角,因为标签的内部无法滚动。


注意:无法将标签小部件(或任何其他小部件)嵌入画布,然后在标签顶部绘制。 官方画布文档对此进行了说明:

注意:由于管理窗口的方式的限制,无法在窗口项的顶部绘制其他图形项(例如线条和图像)。 窗口项始终会遮盖与其重叠的所有图形,无论它们在显示列表中的顺序如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM