如何获取小部件的当前x和y坐标?

时间:2015-05-15 10:46:19

标签: python tkinter move

我目前正在为游戏编写游戏项目"连续4"。为了使图片小部件磁盘落在列中的动画,我一直在考虑创建一个while循环,如下所示:

while widgetx != __ and widgety != __

在空白部分,我将需要获得值。

我的问题是,是否有一个函数可以返回小部件的当前xy值。

3 个答案:

答案 0 :(得分:4)

winfo_rootx()winfo_rooty()返回相对于屏幕左上角的坐标。 winfo_xwinfo_y返回窗口相对于其父窗口的坐标。

答案 1 :(得分:3)

您可以尝试winfo_rootx()winfo_rooty()

来自effbot.com

  

winfo_rootx()

     
    

获取小部件左边缘的像素坐标,相对于屏幕的左上角。

         

返回:根坐标。

  
     

winfo_rooty()

     
    

获取小部件上边缘的像素坐标,相对于屏幕的左上角。

         

返回:根坐标。

  

来自nullege.com的示例:

# get self position & height
lv_x = self.winfo_rootx()
lv_y = self.winfo_rooty()

答案 2 :(得分:0)

是的,它是一个名为coords的小部件的方法,

  

coords(tagOrId,x0,y0,x1,y1,...,xn,yn)查询或修改   定义项目的坐标。如果没有指定坐标,则为此   方法返回一个元组,其元素是项的坐标   由tagOrId命名。如果指定了坐标,则它们将替换   命名项的当前坐标。如果tagOrId指的是多个   项目,然后使用显示列表中的第一个 - 来自" Python和Tkinter编程"作者:John E. Grayson

示例:

root = Tk()
calibCanvas = Canvas(root, width=800,height=800,bg='WHITE')     
canvasRect = calibCanvas.create_rectangle(400,400,410,410, outline='BLUE')  
print calibCanvas.coords(canvasRect)