猿问

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

我一直在尝试制作一个计算器,在我的电磁学课程的 Jupyter Notebook 上使用 Tkinter 查找给定 3 维向量的大小。

我得到了以下代码,该代码可以工作,但它为每个输入坐标提供 3 个条目小部件,并且输入的数字仅出现在与 z 坐标相对应的最后一个小部件中。代码:

from tkinter import *


root = Tk()


root.title("Calculator")


coordinates = []


n=0


X = 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,只有第三个条目小部件接受输入。我该如何解决这个问题?


神不在的星期二
浏览 101回答 1
1回答

慕码人8056858

您不应该直接使用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)当您使用时,()您正在调用该函数,因此要摆脱它,请删除(),因此仅当您按下按钮时才会调用(调用)该函数。
随时随地看视频慕课网APP

相关分类

Python
我要回答