@niggawhat13

При запуске кода выдает ошибку list indices must be integers or slices, not float, python 3.7, поможете?

вот код:
from tkinter import *
class CalcButton(Button):
def __init__(self,*args,**kw):
Button.__init__(self,*args,**kw)
self.__val=''
@property
def Value(self):
return self.__val
@Value.setter
def Value(self,val):
self.__val=str(val)
def set_command(self,obj):
self.configure(command=lambda : obj.text.insert(END,self.Value))
class Calc(object):
def __init__(self, master):
self.master=master
self.COMMANDS=['+','-','*','/','.']
self.text_frame=Frame(master=self.master)
self.text_frame.pack()
self.text=Text(master=self.text_frame, width=30, height=3, font="Verdana 12")
self.text.pack()
self.int_common_frame=Frame(master=self.master)
self.int_common_frame.pack(side=LEFT, padx=10)
self.int_frames=[ Frame(master=self.int_common_frame) for _ in range(4) ]
for fr in self.int_frames:
fr.pack()
self.commands_frame=Frame(master=self.master)
self.commands_frame.pack(side=LEFT, padx=10, pady=10)
self.int_buttons=[CalcButton(master=self.int_frames[i/3], text=i) for i in range(10)]
self.command_buttons=[CalcButton(master=self.commands_frame, text=c) for c in self.COMMANDS]
self.pac_buttons(self.int_buttons, LEFT)
self.pac_buttons(self.command_buttons,BOTTOM)
self.enter_frame=Frame(master=self.master)
self.enter_frame.pack(side=LEFT)
self.enter_button=Button(master=self.enter_frame, text='=', command=self.calculate)
self.enter_button.pack()
self.clear_button=Button(master=self.enter_frame, text=' C ', command=self.clear)
self.clear_button.pack()
def pac_buttons(self,l,side):
for bt in l:
bt.Value=bt.config()['text'][4]
bt.set_command(self)
bt.pack(side=side)
def calculate(self):
try:
result=eval(self.text.get(1.0,END))
except SyntaxError:pass
except ZeroDivisionError:
self.text.delete(1.0,END)
self.text.insert(END,u'На ноль делишь, с@бака!')
else:
self.text.delete(1.0,END)
self.text.insert(END,result)
def clear(self):
self.text.delete(1.0,END)
if __name__=="__main__":
root = Tk()
app = Calc(root)
root.mainloop()
  • Вопрос задан
  • 1935 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Filart97
Такие ошибки нужно не исправлять, а в принципе исключать возможность их появления. Добавь аннотацию типов в свой код и используй mypy или pycharm.
Ошибка означает, что метод list. __getitem__ принимает аргумент только типа int. Помог?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы