Здравствуйте.
Есть у меня функция расчета и вывода параметров болта.
Код:
def solve_equation():
def solver(list_):
l1 = float(Entry_I.get()) - float(
Entry_J.get()) # The length of the working section of the screw without thread
list_.append(float(l1))
l2 = float(Entry_L.get()) + float(Entry_M.get()) + float(Entry_O.get()) + float(
Entry_P.get()) - l1 # Threaded screw working length
list_.append(float(l2))
l3 = pi * (float(Entry_C.get()) ** 2) / 4 # Bolt cross-sectional area (gross)
list_.append(float(l3))
l4 = pi / 4 * (float(Entry_D.get()) / 2 + float(Entry_E.get()) / 2) ** 2 # Bolt cross-sectional area (net)
list_.append(float(l4))
l5 = exp(2.6111 * float(Entry_F.get()) / float(Entry_C.get()) - 0.48596) / float(Entry_C.get()) / float(
Entry_A.get()) # The compliance of the threaded part of the bolt within the nut
list_.append(float(l5))
l6 = l2 / l4 / float(Entry_A.get()) # Threaded bolt working area compliance
list_.append(float(l6))
l7 = l1 / l3 / float(Entry_A.get()) # Compliance of a working section of a bolt without thread
list_.append(float(l7))
l8 = 0.15 / float(Entry_G.get()) / float(Entry_A.get()) # Bolt Head Compliance
list_.append(float(l8))
l9 = l5 + l6 + l7 + l8
list_.append(float(l9))
l10 = 2.3 / pi / float(Entry_N.get()) / float(Entry_A.get()) / float(Entry_Q.get()) * log10(
(0.9 * float(Entry_H.get()) + float(Entry_N.get())) / (
0.9 * float(Entry_H.get()) - float(Entry_N.get())) * (
0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) - float(Entry_N.get()))
/ (0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) + float(Entry_N.get())))
list_.append(float(l10))
l11 = 2.3 / pi / float(Entry_N.get()) / float(Entry_A.get()) / float(Entry_Q.get()) * log10(
(0.9 * float(Entry_H.get()) + float(Entry_N.get())) / (
0.9 * float(Entry_H.get()) - float(Entry_N.get())) * (
0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) - float(Entry_N.get()))
/ (0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) + float(Entry_N.get())))
list_.append(float(l11))
l12 = l9 + l10 + l11
list_.append(float(l12))
l13 = 2.3 / pi / float(Entry_H.get()) / float(Entry_A.get()) / float(Entry_Q.get()) * log10(
(0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) + float(Entry_K.get())) / (
0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) -
float(Entry_K.get())) * (
0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) + 2 *
float(Entry_L.get()) * float(Entry_Q.get()) - float(Entry_K.get())) / (
0.9 * float(Entry_H.get()) + 2 * float(Entry_O.get()) * float(Entry_Q.get()) + 2 *
float(Entry_L.get()) * float(Entry_Q.get()) + float(Entry_K.get())))
list_.append(float(l13))
l14 = 2.3 / pi / float(Entry_K.get()) / float(Entry_A.get()) / float(Entry_Q.get()) * log10(
(0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) + float(Entry_K.get())) / (
0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) -
float(Entry_K.get())) * (
0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) +
2 * float(Entry_M.get()) * float(Entry_Q.get()) - float(Entry_K.get())) / (
0.9 * float(Entry_H.get()) + 2 * float(Entry_P.get()) * float(Entry_Q.get()) +
2 * float(Entry_M.get()) * float(Entry_Q.get()) + float(Entry_K.get())))
list_.append(float(l14))
l15 = l13 + l14
list_.append(float(l15))
l16 = l15 / (l12 + l15)
list_.append(float(l16))
l17 = 0.5 * float(Entry_D.get()) / float(Entry_C.get()) * tan(
atan(float(Entry_F.get()) / pi / float(Entry_D.get())) + atan(float(Entry_R.get()) / cos(pi / 6)))
list_.append(float(l17))
l18 = sqrt(1 + 48 * (float(Entry_C.get()) / float(Entry_E.get()) * l17) ** 2)
list_.append(float(l18))
l19 = float(Entry_T.get()) * float(Entry_C.get()) * l17 / 1000
list_.append(float(l19))
l20 = float(Entry_T.get()) / 3 * float(Entry_S.get()) * (
(0.9 * float(Entry_H.get())) ** 3 - float(Entry_N.get()) ** 3) / (
(0.9 * float(Entry_H.get())) ** 2 - float(Entry_N.get()) ** 2) / 1000
list_.append(float(l20))
l21 = l19 + l20
list_.append(float(l21))
l22 = l4 * float(Entry_B.get())
list_.append(float(l22))
l23 = l22 / (l16 / (1 - l16) + l18)
list_.append(float(l23))
l24 = l22 / l18
list_.append(float(l24))
l25 = float(Entry_T.get()) * l18 / l4
list_.append(float(l25))
l26 = l25 / float(Entry_B.get()) * 100
list_.append(float(l26))
if float(Entry_T.get()) < l23:
l27 = float(Entry_T.get()) / (1 - l16)
list_.append(float(l27))
else:
l27 = '----'
list_.append(l27)
list_min_1 = [Entry_B.get(), Entry_B_d2.get()]
dft = float(min(list_min_1))
l28 = 0.9 * 0.25 * pi * (float(Entry_C.get()) ** 2 - float(Entry_E.get()) ** 2) * (
(float(Entry_I.get()) - float(Entry_L.get()) - float(Entry_O.get()) - float(Entry_P.get())) /
float(Entry_F.get()) - 2) * 1.5 * dft - float(Entry_T.get())
list_.append(float(l28))
l29 = 0.9 * pi * float(Entry_C.get()) * (
float(Entry_I.get()) - float(Entry_L.get()) - float(Entry_O.get()) -
float(Entry_P.get()) - 2 * float(Entry_F.get())) * 0.76 * 0.3 * dft - float(Entry_T.get())
list_.append(float(l29))
if l27 == '----':
list_min_2 = [l28, l29]
else:
list_min_2 = [l27, l28, l29]
l30 = min(list_min_2)
list_.append(float(l30))
l31 = float(Entry_U.get()) / l30
list_.append(float(l31))
l32 = float(Entry_I.get()) - float(Entry_L.get()) - float(Entry_M.get()) - float(Entry_O.get()) - float(
Entry_P.get()) + float(Entry_C.get()) / 2
list_.append(float(l32))
solver(list_of_names_for_variable_values)
l_1 = 0
while l_1 < len(list_of_full_variables_names):
Label(txt, text=list_of_full_variables_names[l_1]).grid(row=l_1, column=0, sticky=W)
Label(txt, text=list_of_variables_names[l_1]).grid(row=l_1, column=1, ipadx=10, sticky=W)
Label(txt, text='%.3f' % list_of_names_for_variable_values[l_1], font='Arial 14').grid(row=l_1,
column=2,
sticky=W)
Label(txt, text=list_of_dimension_parameter[l_1]).grid(row=l_1, column=3, ipadx=1, sticky=W)
l_1 = l_1 + 1
Которая в свою очередь привязана к нажатию кнопки.
Код:
but = Button(frame, text="Solve", command=solve_equation)
but.grid(row=0, column=0, padx=550, pady=770, sticky=N + W)
Данная функция считает и выводит данные, но только один раз за запуск программы. То есть, если я изменю входные данные и ещё раз нажму кнопку запуска расчета, то я не увижу никаких изменений.
Помогите, пожалуйста, разобраться с тем как исправить это. Спасибо.