Python 3.x ValueError:complex()arg是格式错误的字符串

Python 3.x ValueError:complex()arg是格式错误的字符串,python-3.x,tkinter,tkinter-entry,Python 3.x,Tkinter,Tkinter Entry,我必须从tkinter的Entry小部件中获取复数作为输入,并对该复数执行共轭运算。我应用了显式转换方法,但我的代码无法将条目小部件字符串转换为复数并显示错误值error:complex arg是一个格式错误的字符串有人能帮我吗? 先谢谢你 lbl_shh=Label(second_root,text="Enter parameter Shh",fg="red").grid(column=0,row=7,padx=20,pady=20) e_shh = Entry(second_

我必须从tkinter的Entry小部件中获取复数作为输入,并对该复数执行共轭运算。我应用了显式转换方法,但我的代码无法将条目小部件字符串转换为复数并显示错误值error:complex arg是一个格式错误的字符串有人能帮我吗? 先谢谢你

    lbl_shh=Label(second_root,text="Enter parameter Shh",fg="red").grid(column=0,row=7,padx=20,pady=20)
    e_shh = Entry(second_root)
    lbl_svv=Label(second_root,text="Enter parameter Svv",fg="red").grid(column=0,row=8,padx=20,pady=20)
    e_svv = Entry(second_root)
    e_shh.grid(column=1,row=7)
    e_svv.grid(column=1,row=8)

    shh=e_shh.get()
    svv=e_svv.get()

    shh=shh.replace(" ","")
    svv=svv.replace(" ","")

    shh=complex(shh)
    svv=complex(svv)

    #shh=complex(''.join(shh.split()))
    #svv=complex(''.join(svv.split()))

    shhs=np.conjugate(shh)
    svvs=np.conjugate(svv)

    num= svv*svvs
    dem=shh*shhs
    f=np.power(num/dem, 0.25)

我必须打印f的值,我认为您误解了如何在tkinter中正确获取信息,可能是Python中的信息

当代码刚刚初始化时,不能仅使用.get。它将始终返回一个空字符串,除非您有一些代码在get之前设置值,并且在这一点上使用get是多余的

你需要做的是有一些代码,比如一个按钮,当有人添加了一些东西后,它会拉取你的入口的值

我还注意到在您的示例代码中有第二个_根,这使我相信您在代码中使用了两个Tk实例。如果是这样的话,这也可能是你的问题的一部分。在tkinter中编码时,您应该只有一个Tk实例

要解决您的问题,请执行以下示例:

我添加了一些打印语句、一个函数和一个按钮,以显示get实际捕获的内容,或者更确切地说,显示它是一个空字符串。如果在执行get时字段中没有任何内容

这是一个例子,当你输入一个合适的值,复数可以使用

请参见下面的示例了解get的工作原理:


当它出错时,您要传递给complex的字符串的值是多少?我刚刚执行了代码,它在获取Entry widget中的任何值之前显示了错误。您创建了Entry widget,然后在它仍然为空时尝试立即转换值。然后我如何获取Entry widget值并执行操作。我将把它存放在哪里?从GUI将复数作为i/p并执行所需操作的另一种方法是什么?@FrainBr33z3 OP在这里使用网格非常好。这不是他们问题的一部分。@varsha人倾向于花大量时间彻底回答问题。如果某个解决方案回答了您的问题,请检查它,如果它不能解决问题,请留下评论。
import tkinter as tk


root = tk.Tk()

entry = tk.Entry(root)
entry.pack()


def print_entry():
    print(entry.get())


tk.Button(root, text='Print Entry', command=print_entry).pack()

root.mainloop()