2017-01-21 4 views
-2

Я создал класс, который использует несколько методов/функций (я не знаю, что их называют) из модуля Image в PIL library. В этом коде я прошу пользователя ввести новую высоту для изменения размера изображения. Поскольку я хочу, чтобы пользователь снова вводил его, если возникла ошибка, у меня есть это в цикле while.input() Statement Constantly Raising TypeError

Сначала я пытался принять кортеж, а затем распаковать его в переменные new_height и new_width, но я решил, что это может смутить пользователя.

Пожалуйста, примите во внимание, что весь импорт был изготовлен.

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 

System: Windows 10, 32bit Version: Python 3.6

+1

поверг в междунар: 'int (input (" ..... "))' – MYGz

+0

Хорошо, спасибо! – Frixoe

ответ

3

input() должен вызываться со строкой. self.img_height и self.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(
      ... 
     ) 
+0

omg ... Почему я так не подумал? ; -; Но спасибо большое! – Frixoe