我在使用下面的代码时遇到了一些问题。这是我第一次使用GUI,并且自从我使用python以来已经有一段时间了。当我尝试用按钮执行solfield功能时,它不会输出。使用GUI的Python执行顺序
from Tkinter import *
import math
master = Tk()
n = float()
I = float()
def solfield():
pass
label_coils = Label(text='Number of Coils Per Meter', textvariable=n)
label_coils.grid()
coils = Entry(master)
coils.grid()
label_current = Label(text='Current in Amps', textvariable=I)
label_current.grid()
current = Entry(master)
current.grid()
calculate_button = Button(text='Calculate', command=solfield())
calculate_button.grid()
label_bfield = Label(text='B Field in +z Direction')
label_bfield.grid()
label_result = Label(text='solfield')
label_result.grid()
master.title('Coil Gun Simulation')
master.mainloop()
def solfield():
mu0 = math.pi*4e-7
solfield = mu0*n*I
print solfield
任何其他技巧也将不胜感激,因为最终会有更多的编码为我做。
这已经解决了。如果有人有兴趣,这里是几个修复了代码之后:
from Tkinter import *
import math
master = Tk()
label_coils = Label(text='Number of Coils Per Meter')
label_coils.grid()
coils = Entry(master)
coils.grid()
label_current = Label(text='Current in Amps')
label_current.grid()
current = Entry(master)
current.grid()
def solfield():
mu0 = math.pi*4e-7
n = float(coils.get())
I = float(current.get())
fieldmag = mu0*n*I
print fieldmag
calculate_button = Button(text='Calculate', command=solfield)
calculate_button.grid()
label_bfield = Label(text='B Field in +z Direction')
label_bfield.grid()
label_result = Label(text='solfield')
label_result.grid()
master.title('Coil Gun Simulation')
master.mainloop()
您应该在'solfield'函数中使用与'solfield'不同的变量名称。这很可能会给你带来问题。 – SethMMorton
另一方面,'n = float()'与'n = 0.0'相同,首先这样做确实没有什么好的理由。我不认为你需要一个全局变量。如果你这样做,你可能不希望它是0(否则'solfield()'将总是打印'0' ...)。所以,大概你会在某个时候设定一个“真正的价值”。如果是这样,你不需要先将其设置为float(),然后再将其设置为实际值。 Python不要求你“在顶部声明变量”,如C. – abarnert