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

给定x/y坐标与宽高用Tkinter绘制三角形无显示问题咨询

问题排查与修复

你的代码运行后无内容,核心问题包含坐标计算逻辑错误,同时还有参数传值的低级问题:

  • create_polygon 绘制三角形需要传入3个顶点合计6个坐标值(格式为[顶点1x, 顶点1y, 顶点2x, 顶点2y, 顶点3x, 顶点3y]),你写的points列表只有4个值,仅能定义2个点,根本无法生成闭合的三角形图形。
  • 坐标计算完全混淆了x、y轴的维度:你把垂直高度h的偏移错误叠加到了x轴坐标上,没有按照「水平偏移对应宽度w、垂直偏移对应高度h」的规则计算底角坐标。
  • 额外的不规范逻辑:canvas.pack() 被放在了triangle绘制函数内部,每次调用绘制方法都会重复执行布局操作,虽然不会直接导致图形不显示,但属于布局位置错误,应该放在画布初始化阶段执行。

正确的坐标计算逻辑

如果你要绘制的是以传入的(x,y)为顶部尖点、w为底边总宽度、h为垂直高度的等腰三角形,三个顶点的坐标计算规则为:

  1. 顶部尖点:直接使用传入的(x, y)
  2. 左下角点:水平向左偏移宽度的一半,垂直向下偏移整个高度,即(x - w/2, y + h)
  3. 右下角点:水平向右偏移宽度的一半,垂直向下偏移整个高度,即(x + w/2, y + h)

修复后可运行代码

from tkinter import *

tk = Tk()
tk.geometry("600x600")

canvas = Canvas(tk)
# 画布布局放在初始化阶段,不要放入绘制函数
canvas.pack(fill=BOTH, expand=True)

def triangle(x, y, w, h):
    points = [
        x, y,
        x - w/2, y + h,
        x + w/2, y + h
    ]
    # 设置黑色边框,避免默认填充和背景同色看不到
    canvas.create_polygon(points, outline="black")

# 测试调用,参数可自行调整
triangle(300, 200, 100, 100)

tk.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:09:19