Python Turtle绘图偏移屏幕中心,部分内容超屏,求代码修正方案
Python Turtle图案偏移屏幕中心的问题修复
问题根源
当前代码中,海龟从屏幕原点(默认中心)开始,以(x*TILE_SIZE, -y*TILE_SIZE)为起点绘制每个方块,导致整个图案的左上角对齐屏幕中心,大部分区域偏移到屏幕右下侧,超出可视范围。
修复方案
要让图案居中,需要计算偏移量,将整个网格的中心与屏幕中心对齐:
- 计算整个网格的总宽度和总高度:
total_width = IMG_WIDTH * TILE_SIZE,total_height = IMG_HEIGHT * TILE_SIZE - 计算x轴偏移量:
offset_x = -total_width / 2(将网格左边缘移到屏幕中心左侧一半宽度的位置) - 计算y轴偏移量:
offset_y = total_height / 2(将网格上边缘移到屏幕中心上方一半高度的位置) - 修改
goto的坐标,在原有基础上加上偏移量
同时可以优化绘图逻辑,避免在循环内反复调用pendown()和penup(),提升绘制效率。
修改后的完整代码
import turtle t = turtle.Turtle() t.speed(0) t._delay(0) t.penup() # 初始状态抬起画笔,避免移动留痕 screen = turtle.Screen() screen.colormode(255) BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) BLUE = (0, 0, 255) GREEN = (0, 255, 0) IMG_WIDTH = 8 IMG_HEIGHT = 8 TILE_SIZE = 32 image = [[2,0,0,0,0,0,0,2], [0,2,0,2,2,0,2,0], [0,0,2,3,3,2,0,0], [4,4,1,2,2,1,4,4], [3,0,0,4,4,0,0,3], [3,0,0,4,4,0,0,3], [3,0,0,4,4,0,0,3], [2,0,0,3,3,0,0,2]] COLOR_DICTIONARY = { 0 : BLACK, 1 : WHITE, 2 : RED, 3 : BLUE, 4 : GREEN} # 计算居中偏移量 total_width = IMG_WIDTH * TILE_SIZE total_height = IMG_HEIGHT * TILE_SIZE offset_x = -total_width / 2 offset_y = total_height / 2 for y in range(0, IMG_HEIGHT): for x in range(0, IMG_WIDTH): color = COLOR_DICTIONARY.get(image[y][x]) t.color(color) t.fillcolor(color) # 应用偏移量调整绘制起点 t.goto(x*TILE_SIZE + offset_x, -y*TILE_SIZE + offset_y) t.begin_fill() t.pendown() for i in range(4): t.forward(TILE_SIZE) t.right(90) t.penup() t.end_fill() turtle.done() # 保持窗口打开
额外优化点说明
- 初始状态添加
t.penup(),避免海龟移动时留下多余轨迹 - 提取
color变量,减少重复的字典查询操作 - 最后添加
turtle.done(),防止程序运行结束后窗口直接关闭
内容的提问来源于stack exchange,提问作者Golden_Ketchup0
相关产品推荐
相关产品推荐

