我必须将复数作为 tkinter 的 Entry 小部件的输入,并对该复数执行共轭运算。我应用了显式转换方法,但我的代码无法将 Entry 小部件字符串转换为复数并显示错误“ValueError: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 是多余的。
您需要做的是编写一些代码(例如按钮),在有人向条目添加内容后,它将提取您的条目的值。
我还注意到在您的示例代码中您有
second_root
,这让我相信您在代码中使用了 2 个 Tk()
实例。如果是这种情况,这也可能是您问题的一部分。在 tkinter 中编码时,您应该只拥有一个 Tk()
实例。
要列出您的问题,请举个例子:
我添加了一些打印语句、一个函数和一个按钮来显示
get()
实际抓取的内容,或者更确切地说,显示它是一个空字符串。如果执行 get()
时现场还没有任何东西。
这是当您输入
complex()
可以使用的正确值时的示例结果。
请参阅下面的示例以了解
get()
的工作原理:
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()
我在下面遇到了同样的错误:
ValueError:complex() arg 是格式错误的字符串
因为我没有放入
j
,用complex()将
str
类型转换为complex
类型,如下所示:
complex('3+7') # Error
所以,我输入
j
,然后我就可以得到如下所示的结果:
# ↓
complex('3+7j')