Zelle的graphics.py中图形对象move方法参考点及窗口适配问题
Zelle graphics.py 中move方法及显示问题解答
关于move方法的偏移逻辑
move(x, y)方法的作用是给图形所有顶点的坐标加上相对偏移量,并非将图形移动到某个绝对坐标点。
拿你给出的矩形示例来说:
Rectangle(Point(4,5), Point(10,15))
这个矩形的左上角是(4,5)、右下角是(10,15)。调用move(20,25)后,每个顶点的x坐标都会加20,y坐标都会加25:
- 左上角变为
(4+20, 5+25) = (24, 30) - 右下角变为
(10+20, 15+25) = (30, 40)
所以既不是从(20,25)位置开始绘制,也不是以(20,25)为中心,而是整个图形在x轴方向向右偏移20单位,y轴方向向下偏移25单位(graphics.py中y轴向下为正方向)。
移动后图形无法完全显示的解决办法
出现这个问题是因为移动后的图形超出了当前窗口的可见范围——graphics.py默认窗口的坐标范围是(0,0)到(200,200),窗口大小为200x200像素。你可以通过以下方式解决:
- 扩大窗口尺寸:创建窗口时指定更大的宽高,比如:
win = GraphWin("My Window", 600, 500) # 宽600像素,高500像素 - 重新定义坐标系统:用
setCoords()调整窗口的坐标范围,让它能容纳移动后的图形。比如针对上面移动后的矩形,可以设置:win.setCoords(20, 25, 35, 45) # 窗口左下角对应(20,25),右上角对应(35,45) - 计算合适的偏移量:提前估算图形移动后的位置,确保所有顶点都落在窗口默认的坐标范围内(0到窗口宽/高数值之间)。
内容的提问来源于stack exchange,提问作者Magna
相关产品推荐
相关产品推荐

