Python 循环函数非类型对象不可编辑
所以我在运行这个循环函数时出错了,我不知道我做错了什么 脚本只是通过缩放字体大小,直到字体足够小,从而尝试将文本放入图像中。第一次运行是正确的,输入if tSize,但是当它具有正确的字体大小时,它崩溃Python 循环函数非类型对象不可编辑,python,python-imaging-library,recurring,Python,Python Imaging Library,Recurring,所以我在运行这个循环函数时出错了,我不知道我做错了什么 脚本只是通过缩放字体大小,直到字体足够小,从而尝试将文本放入图像中。第一次运行是正确的,输入if tSize,但是当它具有正确的字体大小时,它崩溃 def calculateFontSize(scale, width, height, quoteL, fontsPath): fontSize = int(height*scale) if fonts: fnt = ImageFont.truetype(os
def calculateFontSize(scale, width, height, quoteL, fontsPath):
fontSize = int(height*scale)
if fonts:
fnt = ImageFont.truetype(os.path.join(fontsPath,fonts[randint(0,len(fonts)-1)]),fontSize)
else:
fnt = ImageFont.truetype(wd+'\\fonts\\IndieFlower.ttf',fontSize) # Selected font
tSize = [d.textsize(quoteL[0],font = fnt),d.textsize(quoteL[1],font = fnt)]
if tSize[0][0] > width or tSize[1][0] > width:
scale = scale - 0.005
calculateFontSize(scale, width, height, quoteL, fontsPath)
else:
return tSize, int(fontSize), fnt
tSize, fontSize, fnt = calculateFontSize(scale, width, height, quoteL, fontsPath)
这是我得到的错误:
Traceback (most recent call last):
File "C:\script.py", line 286, in <m
odule>
main()
File "C:\script.py", line 275, in ma
in
image = writeOnImage(picture,quoteL)
File "C:\script.py", line 188, in wr
iteOnImage
tSize, fontSize, fnt = calculateFontSize(scale, width, height, quoteL, fonts
Path)
TypeError: 'NoneType' object is not iterable
回溯(最近一次呼叫最后一次):
文件“C:\script.py”,第286行,在
main()
文件“C:\script.py”,第275行,单位为ma
在里面
image=writeOnImage(图片,引号)
文件“C:\script.py”,第188行,在wr中
iteOnImage
tSize,fontSize,fnt=计算字体大小(比例,宽度,高度,引号,字体
(路径)
TypeError:“非类型”对象不可编辑
我做错了什么
SOLVED:当我在函数内部调用它时,我应该返回该函数。
calculateFontSize
在函数的第二个分支中没有返回任何内容(因此它将隐式返回None
)?我应该在哪里返回?@mavano您是否同意,如果您没有在每个条件分支中返回某些内容,那么在某些情况下,您的函数将不会返回任何内容(None
)?请注意,修复方法不是返回函数,而是返回递归函数调用的值。