'float' object is not subscriptable这要怎么解决呀

Traceback (most recent call last):
  File "C:/Users/Dell/PycharmProjects/banmaxian/预测.py", line 74, in <module>
    draw.text((50.50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))
  File "F:\Anaconda\lib\site-packages\PIL\ImageDraw.py", line 221, in text
    xy = xy[0] + offset[0], xy[1] + offset[1]
TypeError: 'float' object is not subscriptable

Process finished with exit code 1

变量xy,offset其中一个应该是float变量而非数组变量,是无法进行下标的引用的。应该传进来个元组,而不是小数点分割的小数。

draw.text((50,50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))

你的代码错误在于这行:draw.text((50.50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255)),注意坐标位置,是一个两个数元组,你却写成了50.50,运行中必然报浮点数无法用下标引用错误。改为(50,50)。

draw.text((50,50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))
draw.text((50.50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))

# 把上面的代码替换为下面的代码,你把逗号(,)误写为点号(.)了

draw.text((50, 50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))

错误就是(50,50) 中间是逗号, draw.text 的第一个参数是二维数组(50,50)  ,你写成一位数组的话(50.50), 里面方法取索引 [1] 时就会出错。

正确的就是

draw.text((50,50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))

 

draw.text((50.50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))

这一行里面50.50是一个数,你的原意应该是要是两个数

应该用,号隔开写成 50,50如下面所示:

draw.text((50,50),'GreenRate:'+str('%.2f')%rate, font=font, fill=(255, 255,255))