Не могу понять, как сделать код при котором выдает сообщение на пустое поле
При нажатии на кнопку, должны посчитаться: вклад, проценты, годы. Но если пользователь нажал на кнопку не заполнив все или что-то то в консоль выводится сообщение "Поля не заполнены!". Помогите увидеть ошибку! Заранее спасибо!
import tkinter
from tkinter import *
def calcSum():
sum_Val = int(sum_.get("1.0",END))
percentVal = int(percent.get("1.0",END))
yearVal = int(year.get("1.0",END))
i = 0
while i < yearVal:
sum_Val = sum_Val+sum_Val*percentVal/100
i+=1
labelResult['text'] = str(sum_Val)
if sum_Val !="0" and percentVal !="0" and yearVal !="0": #Если в переменных ничего не написано, то в консоль должно вывести сообщение
print('Заполните поля!')
win = Tk()
win.title("Счетчик")
win.geometry("400x200")
labelSum = Label(win,text="Введите сумму: ")
labelSum.grid(row=0,column=0)
labelSum = Label(win,text="sum")
labelSum.grid(row=0,column=2,sticky='w')
sum_ = Text(win,width=10,height=1)
sum_.grid(row=0,column=1)
labelPercent = Label(win,text="Введите проценты: ")
labelPercent.grid(row=1,column=0)
labelPercent = Label(win,text="%")
labelPercent.grid(row=1,column=2,sticky='w')
percent = Text(win,width=10,height=1)
percent.grid(row=1,column=1)
labelYear = Label(win,text="Введите кол-во лет: ")
labelYear.grid(row=2,column=0)
labelYear = Label(win,text="year")
labelYear.grid(row=2,column=2,sticky='w')
year = Text(win,width=10,height=1)
year.grid(row=2,column=1)
button = Button(win,text="Посчитать сумму",command=calcSum)
button.grid(row=3,column=0,columnspan=2)
labelResult = Label(win,text="",font='sans 20')
labelResult.grid(row=4,column=0,columnspan=2)
win.mainloop()
Ответы (2 шт):
Автор решения: Serg Bocharov
→ Ссылка
Присвойте полям значения по умолчанию, которые проверяете:
... # Ваш код
sum_.insert(1.0, "0")
percent.insert(1.0, "0")
year.insert(1.0, "0")
win.mainloop()
Автор решения: n1tr0xs
→ Ссылка
Здесь вам следует использовать блок try/except:
def calcSum():
try: # мы пытаемся сделать числа
sum_Val = int(sum_.get("1.0",END))
percentVal = int(percent.get("1.0",END))
yearVal = int(year.get("1.0",END))
except ValueError: # если не получается, то что-то неправльно заполнено
print('Поля не заполнены или заполнены неверно!')
else: # если получается, то считаем
# в данном случае цикл for использовать предпочтительнее
for i in range(yearVal):
sum_Val = sum_Val+sum_Val*percentVal/100
labelResult['text'] = str(sum_Val)