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

如何使用simpleGUI模块绘制圆形,为房屋添加左上角背景太阳

如何用simplegui的canvas.draw_polygon绘制太阳(近似圆形)

当然可以用canvas.draw_polygon实现圆形(太阳)——原理是用大量短边的多边形来近似圆形,边数越多,形状越接近完美的圆。

具体实现步骤:

  1. 确定太阳的中心坐标、半径和边数(比如选36边,视觉上已经足够接近圆形)
  2. 计算多边形每个顶点的坐标:利用Python标准库math的三角函数(sin/cos)计算每个顶点相对于中心的位置(math属于Python自带库,不算额外GUI模块)
  3. 把所有顶点传入draw_polygon,设置填充色为黄色,边框用同色系增强效果

修改后的完整代码:

import simplegui
import math

def draw_handler(canvas):
    # 先画太阳(如果要太阳在房屋背景层,就把这段放在最前面)
    sun_center = (80, 80)  # 左上角位置
    sun_radius = 40
    sides = 36  # 边数越多越接近圆
    sun_points = []
    for i in range(sides):
        angle = 2 * math.pi * i / sides
        x = sun_center[0] + sun_radius * math.cos(angle)
        y = sun_center[1] + sun_radius * math.sin(angle)
        sun_points.append((x, y))
    canvas.draw_polygon(sun_points, 2, "orange", "yellow")
    
    # 原房屋绘制代码
    canvas.draw_polygon([(100,400),(300,400),(300, 200),(100,200)], 3, "black", "wheat")
    canvas.draw_polygon([(200, 50),(75,200),(325,200)], 3, "black", "red")
    canvas.draw_polygon([(175, 400),(225, 400),(225, 325),(175,325)], 3, "black", "brown")
    canvas.draw_polygon([(175, 280),(175, 230),(125,230),(125,280)], 8, "brown")
    canvas.draw_polygon([(225, 280),(225, 230),(275,230),(275,280)], 8, "brown")
    canvas.draw_line((250,230),(250,280), 8, "brown")
    canvas.draw_line((225,255),(275,255), 8, "brown")
    canvas.draw_line((150,230),(150,280), 8, "brown")
    canvas.draw_line((125,255),(175,255), 8, "brown")

frame = simplegui.create_frame("Home Sweet Home", 400, 400)
frame.set_canvas_background("lightblue")
frame.set_draw_handler(draw_handler)
frame.start()

关键注意点:

  • 如果希望太阳在房屋的背景层(不遮挡房屋),必须把太阳的绘制代码放在所有房屋图形代码的前面——因为simplegui的绘制顺序是先画的图形在底层,后画的在顶层。
  • 若你确实不能使用math模块,可以手动预计算一组近似圆形的顶点坐标(提前算出多个点的x、y值直接写进列表),效果一致但操作更繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:43:23