tkinter self.canvas.itemcget() 获取对象的坐标
时间: 2024-02-13 09:00:58 浏览: 197
`self.canvas.itemcget()` 方法可以获取指定对象的属性值,但是它不能获取对象的坐标。要获取对象的坐标,可以使用 `self.canvas.coords()` 方法。例如,如果你想获取一个名为 `obj` 的对象的坐标,可以使用以下代码:
```
coords = self.canvas.coords(obj)
```
这将返回一个列表,其中包含了对象的左上角和右下角坐标,例如 `[x1, y1, x2, y2]`。你可以使用这些坐标来计算对象的中心点或任何其他你需要的位置。
相关问题
store = self.canvas.create_line(self.x, self.y, self.x+self.length, self.y+self.length, width=2, fill='red')
这是一个使用 tkinter 库创建画布并绘制一条线段的代码。其中,self.canvas 是画布对象,self.x 和 self.y 是起点的横纵坐标,self.length 是线段的长度,width 是线段的宽度,fill 是线段的颜色。这段代码会返回一个 store 值,可以用于后续的修改或删除该线段。
def move_to(self, state, delay=0.01): '''玩家移动到新位置,根据传入的状态''' coor_old = self.canvas.coords(self.rect) # 形如[5.0, 5.0, 35.0, 35.0](第一个格子左上、右下坐标) x, y = state % 8, state // 8 # 横竖第几个格子 padding = 5 # 内边距5px,参见CSS coor_new = [self.UNIT * x + padding, self.UNIT * y + padding, self.UNIT * (x + 1) - padding, self.UNIT * (y + 1) - padding] dx_pixels, dy_pixels = coor_new[0] - coor_old[0], coor_new[1] - coor_old[1] # 左上角顶点坐标之差 self.canvas.move(self.rect, dx_pixels, dy_pixels) self.update() # tkinter内置的update! time.sleep(delay)
这是一个Python类的方法,用于将玩家移动到新位置。该方法的输入参数包括两个变量:state和delay。其中,state表示新位置所在的状态,delay表示移动动画的延迟时间。
具体来说,该方法首先通过self.canvas.coords()方法获取当前矩形的坐标,存储在列表coor_old中。然后,根据输入的state计算出新位置的坐标,存储在列表coor_new中。接着,计算出新位置与当前位置的坐标差(dx_pixels, dy_pixels),并调用canvas.move()方法将矩形移动到新位置。最后,使用tkinter内置的update()方法更新画布,并使用time.sleep()方法设置延迟时间,以实现移动动画效果。
该方法是一个面向对象的方法,通常用于实现图形界面的动画效果。在游戏开发等领域中,移动动画效果是非常常见的。
阅读全文