У меня возникли некоторые проблемы со следующим кодом. Это первый раз, когда я работаю с графическим интерфейсом, и прошло некоторое время с тех пор, как я работал с python. Когда я пытаюсь выполнить функцию solfield с помощью кнопки, она не выводит результат.Порядок выполнения 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