Я получаю ошибку отступа в компиляторе Eclipse, у кого-нибудь есть какие-либо идеи относительно причины?

#python #tkinter #computer-science

#питон #tkinter #информатика

Вопрос:

Я получаю ошибку отступа в своем компиляторе Eclipse, я отметил конкретную строку ниже, где находится ошибка. У кого-нибудь есть какие-нибудь идеи по исправлению? Это для задания в школе, и я понятия не имею, как это исправить, и я в полной, абсолютной растерянности. Я был бы признателен за любые советы. «Напишите программу на основе графического интерфейса, которая имитирует простой карманный калькулятор. Графический интерфейс отображает одно поле ввода для вывода (я бы предложил сделать его полем только для чтения). Он должен предоставить пользователю 10 цифровых кнопок от 0 до 9 и семь функциональных клавиш для , -, *, /, C (C предназначен для очистки дисплея),. (десятичная точка) и =. = — это вычисление правильного ответа. Если есть ошибка, например, деление на ноль, в поле ввода должно отображаться ошибка или ошибка. Значения в поле ввода построят строку, которая будет преобразована в значение с плавающей точкой для вычисления.» Это задание, которое я должен выполнить.

 from tkinter import * from tkinter import font as tkFont # for convenience  expression = "" # functions def input_number(number, equation):   global expression  # concatenation of string  expression = expression   str(number)  equation.set(expression)   def clear_input_field(equation):  global expression  expression = ""   # setting empty string in the input field  equation.set("Enter the expression")    def evaluate(equation):  global expression   # trying to evaluate the expression  try:  result = str(eval(expression))  equation.set(result)  expression = ""  except:  equation.set("Error: Divide by zero")  expression = ""  def main():  # creating main window  tk = Tk() # setting the title  tk.title("Calculator") # seting the size of window  tk.geometry("570x500") # varible class instantiation  equation = StringVar() # input field for the expression  input_field = Entry(tk, textvariable=equation)  input_field.place(height=100)   input_field.grid(columnspan=4, ipadx=200, ipady=10)   equation.set("Enter the expression")   myFont = tkFont.Font(family='Helvetica', size=12, weight='bold')  input_field['font']=myFont  # creating buttons and placing them at respective positions  _1 = Button(tk, text='1', fg='black', bg='red', bd=2, command=lambda: input_number(1, equation), height=5, width=10) #I'm getting an error on this line  _1['font'] = myFont  _1.grid(row=2, column=0)  _2 = Button(tk, text='2', fg='black', bg='red', bd=2, command=lambda: input_number(2, equation), height=5, width=10)  _2.grid(row=2, column=1)  _3 = Button(tk, text='3', fg='black', bg='red', bd=2, command=lambda: input_number(3, equation), height=5, width=10)  _3.grid(row=2, column=2)  _4 = Button(tk, text='4', fg='black', bg='red', bd=2, command=lambda: input_number(4, equation), height=5, width=10)  _4.grid(row=3, column=0)  _5 = Button(tk, text='5', fg='black', bg='red', bd=2, command=lambda: input_number(5, equation), height=5, width=10)  _5.grid(row=3, column=1)  _6 = Button(tk, text='6', fg='black', bg='red', bd=2, command=lambda: input_number(6, equation), height=5, width=10)  _6.grid(row=3, column=2)  _7 = Button(tk, text='7', fg='black', bg='red', bd=2, command=lambda: input_number(7, equation), height=5, width=10)  _7.grid(row=4, column=0)  _8 = Button(tk, text='8', fg='black', bg='red', bd=2, command=lambda: input_number(8, equation), height=5, width=10)  _8.grid(row=4, column=1)  _9 = Button(tk, text='9', fg='black', bg='red', bd=2, command=lambda: input_number(9, equation), height=5, width=10)  _9.grid(row=4, column=2)  _0 = Button(tk, text='0', fg='black', bg='red', bd=2, command=lambda: input_number(0, equation), height=5, width=10)  _0.grid(row=5, column=0)  plus = Button(tk, text=' ', fg='black', bg='red', bd=2, command=lambda: input_number(' ', equation), height=5, width=10)  plus.grid(row=2, column=3)  minus = Button(tk, text='-', fg='black', bg='red', bd=2, command=lambda: input_number('-', equation), height=5, width=10)  minus.grid(row=3, column=3)  multiply = Button(tk, text='*', fg='black', bg='red', bd=2, command=lambda: input_number('*', equation), height=5, width=10)  multiply.grid(row=4, column=3)  divide = Button(tk, text='/', fg='black', bg='red', bd=2, command=lambda: input_number('/', equation), height=5, width=10)  divide.grid(row=5, column=3)  equal = Button(tk, text='=', fg='black', bg='red', bd=2, command=lambda: evaluate(equation), height=5, width=10)  equal.grid(row=5, column=2)  _1['font'] = myFont  _2['font'] = myFont  _3['font'] = myFont  _4['font'] = myFont  _5['font'] = myFont  _6['font'] = myFont  _7['font'] = myFont  _8['font'] = myFont  _9['font'] = myFont  _0['font'] = myFont   plus['font'] = myFont  minus['font'] = myFont  multiply['font'] = myFont  divide['font'] = myFont  equal['font'] = myFont  clear = Button(tk, text='Clear', fg='black', bg='red', bd=2, command=lambda: clear_input_field(equation), height=5, width=10)  clear.grid(row=5, column=1)  clear['font']=myFont # showing the GUI continue  tk.mainloop()  if __name__ == '__main__': main()```  

Комментарии:

1. Совершенно очевидно, что есть много линий, которые не выстраиваются в линию.

2. В качестве примечания, вы должны хранить свои кнопки в массиве, а не иметь 10 отдельных переменных. Тогда вы могли бы сделать for b in btns: / b['font'] = myFont .

3. в строках после # creating buttons and placing them at respective positions » до plus['font'] = myFont » есть несколько лишних пробелов (2 пробела). Кроме того, main() перед ним должно быть (4 пробела). Они не наблюдаются в вашем коде, которые связаны с ошибкой намерения.

Ответ №1:

Выделенная вами строка и следующие строки имеют отступ на дополнительный шаг — убедитесь, что они совпадают со строкой выше, так как они не находятся внутри другого блока (например, функции или оператора if).