为了账号安全,请及时绑定邮箱和手机立即绑定

在 Tkinter 上制作一个计算器来计算向量的大小

在 Tkinter 上制作一个计算器来计算向量的大小

神不在的星期二 2024-01-04 16:24:10
我一直在尝试制作一个计算器,在我的电磁学课程的 Jupyter Notebook 上使用 Tkinter 查找给定 3 维向量的大小。我得到了以下代码,该代码可以工作,但它为每个输入坐标提供 3 个条目小部件,并且输入的数字仅出现在与 z 坐标相对应的最后一个小部件中。代码:from tkinter import *root = Tk()root.title("Calculator")coordinates = []n=0X = Entry(root)X.insert(END, "Enter the x-coordinate")X.grid(row=0, column=0, columnspan=3, padx=12, pady=15)Y = Entry(root)Y.insert(END, "Enter the y-coordinate")Y.grid(row=1, column=0, columnspan=3, padx=12, pady=15)Z = Entry(root)Z.insert(END, "Enter the z-coordinate")Z.grid(row=2, column=0, columnspan=3, padx=12, pady=15)def x():    global n    n=1    def y():    global n    n=2    def z():    global n    n=3    def S(m):    if n == 1:        a = X.get()        X.delete(0,END)        X.insert(0,str(a)+str(m))        coordinates.append(X)    if n == 2:        b = Y.get()        Y.delete(0,END)        Y.insert(0,str(b)+str(m))        coordinates.append(Y)    if n == 3:        c = Z.get()        Z.delete(0,END)        Z.insert(0,str(c)+str(m))        coordinates.append(Z)        def clear():    X.delete(0,END)    Y.delete(0,END)    Z.delete(0,END)    def equal():    sq = 0    for d in coordinates:        e = float(d.get())        sq = sq + e**2     mag = sq**0.5    val = Label(root, text="The magnitude of the vector is: " + str(mag))    val.grid(row=3, column=0, columnspan=3, padx=12, pady=15)    无论我使用按钮 x、y 还是 z,只有第三个条目小部件接受输入。我该如何解决这个问题?
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您不应该直接使用command按钮“调用”该函数,而是说:

bx = Button(root, text="x", padx=30, pady=15, command=x)
by = Button(root, text="y", padx=30, pady=15, command=y)
bz = Button(root, text="z", padx=30, pady=15, command=z)

当您使用时,()您正在调用该函数,因此要摆脱它,请删除(),因此仅当您按下按钮时才会调用(调用)该函数。


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信