如何用Python Tkinter实现满足要求的draw_square正方形绘制函数
代码调整方案
原代码问题梳理
- 函数
draw_square未按要求定义4个入参(画布、颜色、边长、中心点坐标) - 错误调用
draw_square.create_rectangle,create_rectangle是画布实例的方法,不属于函数对象 - 四个正方形的绘制逻辑硬编码在函数内,不符合单函数仅实现单个正方形绘制的复用要求
- 未返回绘制图形的句柄
- 缺少主窗口事件循环
mainloop(),运行后窗口会直接闪退
修正后完整代码
from tkinter import * root = Tk() my_canvas = Canvas(root, width=900, height=900, bg="white") my_canvas.pack(pady=30) def draw_square(canvas, color, side_length, center): # 计算正方形左上角和右下角坐标 x0 = center[0] - side_length / 2 y0 = center[1] - side_length / 2 x1 = center[0] + side_length / 2 y1 = center[1] + side_length / 2 # 内部调用create_rectangle绘制,返回图形句柄 square_handle = canvas.create_rectangle(x0, y0, x1, y1, fill=color, outline=color) return square_handle # 调用函数绘制四个正方形,对应原代码的位置和颜色 square1 = draw_square(my_canvas, "orange", 150, (75, 75)) square2 = draw_square(my_canvas, "green", 150, (825, 75)) square3 = draw_square(my_canvas, "blue", 150, (75, 825)) square4 = draw_square(my_canvas, "black", 150, (825, 825)) root.mainloop()
功能验证
上述代码完全符合要求:
draw_square仅接收要求的4个参数create_rectangle仅在函数内部调用- 每次调用返回对应正方形的句柄(存储在square1~square4变量中,可后续用于修改图形属性)
- 最终绘制4个对应位置、颜色的正方形,运行效果和原代码预期一致
内容的提问来源于stack exchange,提问作者Rookie
相关产品推荐
相关产品推荐

