[英]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.