У меня есть 3 ярлыка и поля ввода, один - «Сэндвич», другой - напитки, а третий - их расчетная стоимость.
Там я ожидаю, что пользователь введет количество бутербродов и напитков, которые ониПолучите и рассчитайте их цену и покажите ее в третьем окне, используя следующую формулу:
totalCost = (cod*30)+(cos*100)
costtotal.set(totalCost)
И это прекрасно.
Однако проблема в том, что, например,пользователь ничего не вводит в поле напитков, я хочу, чтобы интерпретатор интерпретировал это пустое поле как 0 и вычислял сумму. Но моя программа не рассчитывает его, если какое-либо из двух полей (Напитки и Бутерброды) пусто. Итак, чтобы противостоять этому, я попытался:
if not drinks.get():
yourVar = "0"
cod=float(yourVar)
Это сообщение об ошибке, которое я получаю:
Файл "C: / Users / Dell E6430 / Desktop / try.py", строка 18, в Ref cod = float (drinks.get ()) ValueError: не удалось преобразовать строку в float:
Я не получаю это сообщение об ошибке при вводе обоих полей.
Однако,это не работает, и результат тот же. Итак, как мне это решить? Спасибо.
Вот полный код:
from tkinter import*
root=Tk()
root.geometry("1600x800+0+0")
#------- convert to string
drinks=StringVar()
costtotal=StringVar()
sandwich=StringVar()
#----Frame
f1=Frame(root,width=800, height=700,relief=SUNKEN)
f1.pack(side=LEFT)
def Ref():
cos=float(sandwich.get())
cod=float(drinks.get())
if not drinks.get():
yourVar = "0"
cod=float(yourVar)
totalCost = (cod*30)+(cos*100)
costtotal.set(totalCost)
lblSandwich=Label(f1,font=('arial',16,'bold'),text="Sandwich" , bd=16, anchor='w')
lblSandwich.grid(row=0,column=0)
txtSandwich=Entry(f1,font=('arial',16,'bold'),textvariable=sandwich,bd=10,insertwidth=4,bg="powder blue",justify='right')
txtSandwich.grid(row=0,column=1)
lblDrinks=Label(f1,font=('arial',16,'bold'),text="Drinks" , bd=16, anchor='w')
lblDrinks.grid(row=1,column=0)
txtDrinks=Entry(f1,font=('arial',16,'bold'),textvariable=drinks,bd=10,insertwidth=4,bg="powder blue",justify='right')
txtDrinks.grid(row=1,column=1)
lblcostTotal=Label(f1,font=('arial',16,'bold'),text="Cost of Drinks" , bd=16, anchor='w')
lblcostTotal.grid(row=2,column=0)
txtcostTotal=Entry(f1,font=('arial',16,'bold'),textvariable=costtotal,bd=10,insertwidth=4,bg="powder blue",justify='right')
txtcostTotal.grid(row=2,column=1)
btnTotal=Button(f1,padx=16,pady=8,bd=16,fg="black",font=('arial',16,'bold'),width=10,text="Total", bg="Powder Blue"\
,command=Ref).grid(row=7,column=1)
root.mainloop()
РЕДАКТИРОВАТЬ: Выполнив
cod=drinks.get()
if not drinks.get():
yourVar = "0"
cod=float(yourVar)
else:
cod=float(drinks.get())
, программа теперь работает нормально.