Не видно локальную переменную в if Python tkinter
Пишу программу с tkinter, сделала кнопку, которая должна считать расход топлива, в зависимости от значения из Combobox. При печати текста происходит ошибка UnboundLocalError: local variable 'pacx_benz' referenced before assignment. Как это исправить? При удалении if все исправно работает, но это мне нужно. (я чайник)
def butclick():
try:
nach = int(nach_var.get())
benz = int(benz_var.get())
ost = int(ost_var.get())
if benz_var.get() == 'бензин':
pacx_benz = int(nach + benz - ost)
elif benz_var.get() == 'дизельное топливо':
pacx_diz = int(nach + benz - ost)
except:
pass
if (int(ost)) > ((int(nach) + int(benz))) :
pass #контроль
else:
n="\n"
text.insert(END, n)
b = '\n' + "Фактический расход товара(бензин): " + str(pacx_benz)
text.insert(END, b)
d = '\n' + "Фактический расход товара(дизель): " + str(pacx_diz)
text.insert(END, d)
Ответы (2 шт):
Попробуйте так:
def butclick():
ost = 0
nach = 0
benz = 0
try:
nach = int(nach_var.get())
benz = int(benz_var.get())
ost = int(ost_var.get())
if benz_var.get() == 'бензин':
pacx_benz = int(nach + benz - ost)
elif benz_var.get() == 'дизельное топливо':
pacx_diz = int(nach + benz - ost)
except:
pass
if (int(ost)) > ((int(nach) + int(benz))) :
pass #контроль
else:
n="\n"
text.insert(END, n)
b = '\n' + "Фактический расход товара(бензин): " + str(pacx_benz)
text.insert(END, b)
d = '\n' + "Фактический расход товара(дизель): " + str(pacx_diz)
text.insert(END, d)
В этом коде я объявил переменные ost, nach, и benz до блока if.
В зависимости от вида топлива вы присваиваете значение или pacx_benz, или pacx_diz, и одна из этих переменных в любом случае будет не определена. Однако позднее выводите обе эти переменные. Или измените вывод - только расход бензина или только расход дизеля. Или присваивайте значение обеим переменным в самом начале.