easygui.msgbox ("Вы ввели" + флейвор) TypeError: должен быть str, а не NoneType

import easygui

flavour = easygui.enterbox('What is your favourite ice cream flavour?')

easygui.msgbox ('You entered ' + flavour)

Что мне делать здесь, чтобы при нажатии кнопки "Отмена" в поле "Ввод" ошибка не возвращалась? В настоящий момент я получаю следующую ошибку: "easygui.msgbox (" Вы ввели "+ флейвор) TypeError: должен быть str, а не NoneType"

2 ответа

Решение

Что происходит, так это msgbox хочет, чтобы сообщение было строкой. Тем не менее, если вы нажмете кнопку отмены, flavour это NoneType объект. Вы можете добавить оператор if, чтобы убедиться, что ваш код не содержит ошибок при нажатии отмены. Сделать что-то вроде:

flavour = easygui.enterbox('What is your favourite ice cream flavour?')

if flavour is not None:
    easygui.msgbox ('You entered ' + str(flavour))
else:
    pass

Это сделает это

import easygui
while True:
flavour = easygui.enterbox('What is your favourite ice cream flavour?(type quit to quit)')
a = bool(flavour)
if a == False:
    easygui.msgbox('you did not enter something')
elif a == True:
    if flavour == 'quit':
        break
    else:
        easygui.msgbox ('You entered ' + flavour)

(я могу сделать программу лучше, но больше и больше)

Другие вопросы по тегам