You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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()

功能验证

上述代码完全符合要求:

  1. draw_square仅接收要求的4个参数
  2. create_rectangle仅在函数内部调用
  3. 每次调用返回对应正方形的句柄(存储在square1~square4变量中,可后续用于修改图形属性)
  4. 最终绘制4个对应位置、颜色的正方形,运行效果和原代码预期一致

内容的提问来源于stack exchange,提问作者Rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:08