Ошибка здесь в том, что функция command
ожидает entries
в качестве аргумента, который вы не указали при button
щелчке.
Поскольку вы присвоили записи в текстовом поле для e1,e2,e3,...,e6
, выне нужно вообще передавать entries
в функцию command
.
Вместо этого измените ваш код следующим образом, и он будет работать:
from tkinter import *
def calculations():
shaftdia = float(e1.get())
outdia = 2 * shaftdia
thickfork = 0.75*shaftdia
thicksingleye = 1.75*shaftdia
diapin = shaftdia
diapincollar = 1.5*shaftdia
print("Outer diameter of eye: %f" % float(outdia))
e2_var.set(outdia)
print("Thickness of fork: %f" % float(thickfork))
e3_var.set(thickfork)
print("Thickness of single eye: %f" % float(thicksingleye))
e4_var.set(thicksingleye)
print("Diameter of pin: %f" % float(diapin))
e5_var.set(diapin)
print("Diameter of knuckle pin and collar: %f" % float(diapincollar))
e6_var.set(diapincollar)
master = Tk()
Label(master, text="Shaft Diameter").grid(row=0)
Label(master, text="Outer diameter of eye").grid(row=1)
Label(master, text="Thickness of fork").grid(row=2)
Label(master, text="Thickness of single eye").grid(row=3)
Label(master, text="Diameter of Pin").grid(row=4)
Label(master, text="Diameter of knuckle pin head and collar").grid(row=5)
e1_var = StringVar()
e2_var = StringVar()
e3_var = StringVar()
e4_var = StringVar()
e5_var = StringVar()
e6_var = StringVar()
e1 = Entry(master,textvariable=e1_var)
e2 = Entry(master,textvariable=e2_var)
e3 = Entry(master,textvariable=e3_var)
e4 = Entry(master,textvariable=e4_var)
e5 = Entry(master,textvariable=e5_var)
e6 = Entry(master,textvariable=e6_var)
e1.grid(row=0, column=50)
e2.grid(row=1, column=50)
e3.grid(row=2, column=50)
e4.grid(row=3, column=50)
e5.grid(row=4, column=50)
e6.grid(row=5, column=50)
Button(master, text='ACCEPT', command=calculations).grid(row=10, column=1,
sticky=W, pady=4)
master.mainloop( )
Вывод: (с диаметром вала 20)
Outer diameter of eye: 40.000000
Thickness of fork: 15.000000
Thickness of single eye: 35.000000
Diameter of pin: 20.000000
Diameter of knuckle pin and collar: 30.000000