Подсчет

Din_1323

Новичок
Пользователь
Мар 26, 2022
2
0
1
Здравствуйте, пишу программу с визуалом Python tkinter, есть ввод пяти переменных через код:
tk.Label(win, text='Возраст', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.15, height=50, width=300)
age = tk.Entry(win, font=('Comic Sans MS', '12'))
age.place(relx=.6, rely=.15, height=50, width=300)

также есть иф элс прописанный вот так:


if num > 2.0:
num = 19.88
else:
num = 0
if num1 < 0.5:
num1 = 19.88
else:
num1 = 0
if num2 < 0.5:
num2 = 19.88
else:
num2 = 0
if num3 < 1.2:
num3 = 19.88
else:
num3 = 0
if age > 35:
age = 19.88
else:
age = 0

Итог программы сумма переменных: label = tk.Label(win, text=' Риск равен {} %'.format(age+num+num1+num3+num2),

Проблема в том, что при вводе разных параметров программа выдает один и тот же ответ, полагаю проблема в if else, но что именно не так не могу понять, подскажите пожалуйста
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
932
208
43
20
Москва
Вставь пожалуйста код как код
1647162378032-png.1702
 

Din_1323

Новичок
Пользователь
Мар 26, 2022
2
0
1
Вставь пожалуйста код как код
1647162378032-png.1702
Python:
def add_label():
    label = tk.Label(win, text='Риск равен {} %'.format(age+num+num1+num3+num2),
                       fg='black',
                       font=('Arial', '19'),
                       bg='#FAEEDD'
                       )
    label.place(relx=.025, rely=.87, height=50, width=900)
    return 0

import tkinter as tk
from decimal import Decimal

win = tk.Tk()
win.title('We')
photo = tk.PhotoImage (file='We.png')
win.iconphoto (False, photo)
win.config(background='#CCCCFF')
win.geometry('950x750')
win.resizable(False, False)

label_l.pack()
btnl = tk.Button(win, text='Запустить анализ',
                 font=('Arial', '18'),
                 command=add_label,
                 fg='white',
                 bg='#003153',
                 pady=10,
                 padx=10)

btnl.place(relx=.38, rely=.75, height=70, width=230)

tk.Label(win, text='Возраст', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.25, height=50, width=300)
age = tk.Entry(win, font=('Comic Sans MS', '12'))
age.place(relx=.6, rely=.25, height=50, width=300)

tk.Label(win, text='Фактор 1', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.35, height=50, width=300)
num = tk.Entry(win, font=('Comic Sans MS', '12'))
num.place(relx=.6, rely=.35, height=50, width=300)

tk.Label(win, text='Фактор 2', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.45, height=50, width=300)
num1 = tk.Entry(win, font=('Comic Sans MS', '12'))
num1.place(relx=.6, rely=.45, height=50, width=300)

tk.Label(win, text='Фактор 3', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.55, height=50, width=300)
num2 = tk.Entry(win, font=('Comic Sans MS', '12'))
num2.place(relx=.6, rely=.55, height=50, width=300)

tk.Label(win, text='Фактор 4', font=('Comic Sans MS', '18'), bg='#FAEEDD').place(relx=.1, rely=.65, height=50, width=300)
num3 = tk.Entry(win, font=('Comic Sans MS', '12'))
num3.place(relx=.6, rely=.65, height=50, width=300)

num = Decimal()
num1 = Decimal()
num2 = Decimal()
num3 = Decimal()
age = int()

if num > 2.0:
    num = 19.88
else:
    num = 0
if num1 < 0.5:
    num1 = 19.88
else:
    num1 = 0
if num2 < 0.5:
    num2 = 19.88
else:
    num2 = 0
if num3 < 1.2:
    num3 = 19.88
else:
    num3 = 0
if age > 35:
    age = 19.88
else:
    age = 0

win.mainloop()
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
932
208
43
20
Москва
Что делает твоя программа:
1) Создает объект приложения и наполняет контентом
2) В переменные в которых хранились объекты текстовых полей (Label) записывает объекты чисел (num = 0, ...)
3) Выполняет указанные в if проверки значений num, ... (как помнишь там хранятся нули)
4) Запускает окно программы
5) При нажатии кнопки выводит один и тот же результат, т.к. переменные не меняются, они уже есть

Минимум того что надо сделать чтобы заработало:
1) num = Decimal() и подобные замени на num_i = Decimal(num.get()) (чтобы не терять доступ к полям)
2) Помести выше казанное определение а также все проверки if в начало функции add_label
 

Форум IT Специалистов