input()语句不断引发TypeError

时间:2017-01-21 08:50:18

标签: python python-imaging-library pillow

我从Image的{​​{1}}模块创建了一个使用一些方法/函数(我不知道该怎么称呼它们)的类。在此代码中,我要求用户输入要调整大小的图像的新高度。因为如果出现错误,我希望用户再次输入它,我将它放在PIL library循环中。

我最初尝试接受一个元组,然后将其解压缩到new_height和new_width变量中,但我认为它可能会让用户感到困惑。

请假设已完成所有进口。

while

class ImageManip: def __init__(self): self.img_width, self.img_height = self.img.size self.img_resize() def img_resize(self): while True: clear() try: img_new_width = input( '\n\nYour image\'s dimensions are:' + '\nWidth: ' + self.img_width + '\nHeight: ' + self.img_height + '\n\nEnter the width: ' ) img_new_height = input( 'Enter the height: ' ) except TypeError: print('Oh no! You didn\'t enter a number! Try again.') time.sleep(2) print('\n\n', end='') continue else: self.img_final = self.img.thumbnail((img_new_width, img_new_height), Image.ANTIALIAS) self.img_final.show() break

1 个答案:

答案 0 :(得分:3)

需要使用字符串调用

input()self.img_heightself.img_width是代码中的整数。 如果你在这些上调用str()将它们转换为字符串,它应该可以工作:

 img_new_width = input(
            '\n\nYour image\'s dimensions are:' +
            '\nWidth: ' + str(self.img_width) +
            '\nHeight: ' + str(self.img_height) +
            '\n\nEnter the width: '
        )

您可能希望使用int()将输入转换为整数:

img_new_width = int(input(
           ...
        )