重复函数nonetype对象不可迭代

时间:2018-06-09 12:12:52

标签: python python-imaging-library recurring

所以我在运行这个循环函数时遇到错误,我无法弄清楚我做错了什么。

该脚本只是通过缩放字体大小来尝试将文本放入图像中,直到它足够小。第一次运行是正确的,输入if tSize,但是当它具有正确的字体大小时,它会崩溃。

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

我做错了什么?

已解决:当我在内部调用它时,我应该返回函数。

1 个答案:

答案 0 :(得分:0)

calculateFontSize未在函数的第二个None分支中返回任何内容(因此它将隐式返回if)。