具有三个输入长度的 Tkinter 绘制三角形

Posted

技术标签:

【中文标题】具有三个输入长度的 Tkinter 绘制三角形【英文标题】:Tkinter drawing triangle with three input length 【发布时间】:2022-01-07 18:30:45 【问题描述】:

我想按输入长度绘制三角形。所以我做了三个条目,我可以输入数据。但它说 “TypeError:buttonclick1() 缺少 3 个必需的位置参数:'a'、'b' 和 'c'” 你能帮帮我吗?

我想通过 tkinter 画布的三个输入长度制作一个三角形。请帮帮我!!

from tkinter import*


root=Tk()
root.title("도형 그리기")


def buttonclick1(a, b, c):
    a=ent_a.get()
    a=int(a)
    b=ent_b.get()
    b=int(b)
    c=ent_c.get()
    c=int(c)
    A = (0, 0)
    B = (c, 0)
    hc = (2 * (a**2*b**2 + b**2*c**2 + c**2*a**2) - (a**4 + b**4 + c**4))**0.5 / (2.*c)
    dx = (b**2 - hc**2)**0.5
    if abs((c - dx)**2 + hc**2 - a**2) > 0.01: dx = -dx
    C = (dx, hc)

    coords = [int((x + 1) * 75) for x in A+B+C]

    cv.create_polygon(*coords)
    
               

lb1=Label(root, text="1.삼각형 그리기")
lb2=Label(root, text="삼각형 세 변의 길이를 입력하세요")


ent_a=Entry(root, width=20)
ent_b=Entry(root, width=20)
ent_c=Entry(root, width=20)

bt1=Button(root, text="삼각형 그리기", command=buttonclick1)

cv=Canvas(root, width=500, height=500, bg="white")

lb1.grid(row=0, column=0)
lb2.grid(row=1, column=0, columnspan=3)
ent_a.grid(row=2, column=0)
ent_b.grid(row=2, column=1)
ent_c.grid(row=2, column=2)
bt1.grid(row=3, column=0, columnspan=3)


cv.grid(row=12, column=0, columnspan=3)

root.mainloop()

【问题讨论】:

【参考方案1】:

buttonclick1 函数有 3 个未传递给它的参数(a、b、c),但是当我阅读您的代码时,不需要这些参数,因此您可以将 buttonclick1(a, b, c) 更改为 buttonclick1()第 8 行,它将正常工作。

【讨论】:

以上是关于具有三个输入长度的 Tkinter 绘制三角形的主要内容,如果未能解决你的问题,请参考以下文章

DirectX学习笔记:利用平面着色和Gouraud着色模式绘制具有颜色的三角形

OpenGL学习——绘制三角形

如何以编程方式绘制三角形

绘制顺时针三角形重新排序点

三角形的最大周长

976. 三角形的最大周长